반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준] 백준 27919번 UDPC 파티 자바(JAVA)

1) 문제번호 : 27919

 

2) 문제 출처

https://www.acmicpc.net/problem/27919

 

27919번: UDPC 파티

첫 번째 줄에 참가자가 투표한 결과 $V$가 주어진다. $V$는 U, D, P, C만 포함하는 문자열이고, 길이는 $0$보다 크고 $100\ 000$을 넘지 않는다.

www.acmicpc.net

 

6. 풀이

- U는 C와 같이 취급을 하고, D는 P와 같이 취급을 한다.

- 그래서, 문자열에서 U와 C, D와 P의 개수를 구한다.

- U가 채택되는 조건은 DP의 개수를 1을 더하여 2로 나눈 값보다 커야 한다.

- DP가 채택되는 조건은 DP의 개수가 0보다 커야 한다.

- CCCCCCCCCCCCCDP 이렇게 있을 때, C 2개가 U로 변하면 U도 채택될 수 있고, C가 C로만 되어 있을 경우 D와 P 2개다 채택할 수 있기 때문이다. 이 예시의 정답은 UDP다.

 

7. 소스 코드

package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String str = br.readLine();
		
		int cuCnt = 0;
		int dpCnt = 0;
		
		for(int i = 0; i < str.length(); i++) {
			String s = str.substring(i, i+1);
			
			if(s.equals("C") || s.equals("U")) {
				cuCnt++;
			} else if(s.equals("D") || s.equals("P")) {
				dpCnt++;
			}
		}
		
		String result = "";
		
		//U가 채택되는 경우
		//반례 uc 50 d 45 p 45인 경우 UDP 출력
		if(cuCnt > ((dpCnt + 1) / 2)) {
			result += "U";
		}
		
		//DP가 채택되는 경우
		if(dpCnt > 0) {
			result += "DP";
		}
		
		System.out.println(result);
	}
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기