-
BOJ) 대회 개최알고리즘/백준 2020. 6. 18. 18:04반응형
대회 개최
풀이
한 번의 로직 수정 후에 통과했다. 처음에는 단순하게, E,M,H를 모두 더한 평균 값을 구해서 EM과 MH에서 나눠주면 쉽게 구하지 않을까 생각했다. 하지만, 반례가 있음을 확인했고 아래 코드와 같이 수정했다.
주먹 구구식 코드를 싫어하지만, 달리 방법이 떠오르지 않았다.
그래서, E M H에서 각각 하나씩 제거하면서 가능하면 count를 세주고, 만약 불가능한 경우
E -> EM에서, M -> EM, MH 에서, H -> MH 에서 하나씩 제거 가능한지 여부를 확인해주었다.
가능하면 count를 세주고 아니면 반복문을 종료.
이후 counting해준 수를 출력해주었다.
코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class MaxContest_12915 { final static int SIZE = 5; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] probArr = new int[SIZE]; StringTokenizer st = new StringTokenizer(br.readLine()); for(int i=0; i<SIZE; i++) { probArr[i] = Integer.parseInt(st.nextToken()); } System.out.println(solution(probArr)); br.close(); } private static int solution(int[] probArr) { int answer =0; while(true) { if(probArr[0] >0) { // Easy probArr[0]--; } else if(probArr[1] >0) { probArr[1]--; } else { break; } if(probArr[2] >0) { probArr[2]--; } else if(probArr[1] >0 || probArr[3] >0) { if(probArr[1] >= probArr[3]) { probArr[1]--; } else { probArr[3]--; } } else { break; } if(probArr[4] >0) { probArr[4]--; } else if(probArr[3] >0) { probArr[3]--; } else { break; } answer++; } return answer; } }
반응형'알고리즘 > 백준' 카테고리의 다른 글
BOJ) 욱제는 결정장애야!! (0) 2020.06.18 BOJ) 대출 요청 (0) 2020.06.18 BOJ) 방법을 출력하지 않는 숫자 맞추기 (0) 2020.06.18 BOJ) 양 한마리... 양 두마리... (0) 2020.06.18 BOJ) 자동차경주대회 (0) 2020.06.18