문제 : boj21312
필요 알고리즘 개념
- 짝수, 홀수 판정
- 짝수와 홀수 판정하는 방법을 알아야 한다.
※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.
풀이
문제에서 제시된 조건을 고유 번호의 곱에 해당하는 '맛'을 기준으로 다시 살펴보자. 임의의 맛 X와 맛 Y가 있다고 해보자.
1. X가 홀수이고, Y가 짝수라면 무조건 X가 더 맛있다.
2. X가 짝수이고, Y가 홀수라면 무조건 Y가 더 맛있다.
3. X가 홀수이고, Y가 홀수라면 둘 중 큰 수가 더 맛있다.
4. X가 짝수이고, Y가 짝수라면 둘 중 큰 수가 더 맛있다.
조건은 위와 같으니, 이제 필요한건 고유번호 A,B,C를 통해 만들 수 있는 모든 '맛'의 경우의 수 이다. 모든 경우는 다음과 같다.
1. A
2. B
3. C
4. A*B
5. B*C
6. A*C
7. A*B*C
위의 경우들 중 조건에 따라 가장 맛있다고 느끼는 맛을 출력해주면 된다. 내 경우엔 answer이라는 변수를 하나 두고, 언제나 가장 낮은 맛이 되는 0을 초기값으로 뒀다. 그리고 7가지 경우를 answer과 비교하면서 answer을 7가지 중 가장 맛있는 값으로 변경하는 방식으로 짰다.
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
int answer = 0;
private void setAnswer(int cur) {
if (answer%2==1 && cur%2==0) {
return;
}
if (answer%2==0 && cur%2==1) {
answer = cur;
return;
}
if (answer < cur)
answer = cur;
}
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[3];
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
setAnswer(a);
setAnswer(b);
setAnswer(c);
setAnswer(a*b);
setAnswer(b*c);
setAnswer(a*c);
setAnswer(a*b*c);
System.out.println(answer);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 1038 - 감소하는 수 (java) (0) | 2022.08.18 |
---|---|
[자바] 백준 1517 - 버블 소트 (java) (0) | 2022.08.17 |
[자바] 백준 4562 - No Brainer (java) (0) | 2022.08.17 |
[자바, C++] 백준 10999 - 구간 합 구하기 2 (java cpp) (0) | 2022.08.15 |
[자바] 백준 2820 - 자동차 공장 (java) (0) | 2022.08.15 |
댓글