알고리즘 문제풀이/Beakjoon

백준 21312. 홀짝 칵테일 (JAVA)

joah.k 2023. 4. 8. 17:06
728x90

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

 

21312번: 홀짝 칵테일

정진이는 특별한 음료를 가지고 있다. 음료들은 정수로 표현되는 고유 번호를 가지고 있다. 정진이는 이 음료들을 섞어 만든 칵테일을 만든다. 이 칵테일은 홀짝 칵테일이라 부르는데, 홀짝 칵

www.acmicpc.net

 

 

홀짝 칵테일 

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB 1514 892 796 61.562%

문제

정진이는 특별한 음료를 가지고 있다. 음료들은 정수로 표현되는 고유 번호를 가지고 있다. 정진이는 이 음료들을 섞어 만든 칵테일을 만든다. 이 칵테일은 홀짝 칵테일이라 부르는데, 홀짝 칵테일은 칵테일에 들어가는 음료들의 고유 번호의 곱에 해당하는 맛을 가진다.

정진이는 여러 가지 칵테일을 맛본 결과, 맛이 홀수인 칵테일이 맛이 짝수인 칵테일보다는 무조건 맛있다고 느낀다. 또한, 똑같이 홀수이거나 짝수인 맛을 가진 칵테일끼리는 맛이 더 큰 칵테일을 더 맛있다고 느낀다.

음료 셋의 고유 번호가 주어졌을 때 정진이가 이 음료들을 조합해 만들 수 있는 칵테일 중 가장 맛있다고 느끼는 칵테일의 맛을 알려주자.

칵테일을 만들 때는, 반드시 모든 음료를 사용할 필요는 없지만, 적어도 하나의 음료는 사용해야 한다. 하나의 음료만 사용하는 경우 칵테일의 맛은 사용한 음료의 고유 번호와 같다.

또한, 주어지는 세 음료는 서로 다른 고유 번호를 가지고 있다.

입력

첫째 줄에는 주어진 세 음료의 고유번호 A, B, C가 주어진다.

출력

첫째 줄에 만들 수 있는 홀짝 칵테일 중 가장 정진이가 맛있다고 느끼는 홀짝 칵테일의 맛을 출력한다.

제한

1 ≤ A, B, C ≤ 100

예제 입력 1 복사

2 3 5

예제 출력 1 복사

15

예제 입력 2 복사

11 33 99

예제 출력 2 복사

35937

예제 입력 3 복사

22 44 88

예제 출력 3 복사

85184

 

 


풀이 : 칵테일을 만드는 경우의 수는 2가지.

1) 모두 짝수인 경우 : 짝수끼리 곱한다

2) 하나 이상 홀수가 섞인 경우 : 홀수만 곱한다. 

--- 2) 를 어떻게 계산할지가 방법이 나뉠 거 같은데, 그냥 무식하고 단순하게(?) 홀짝을 구별하는 메서드를 하나 뺐다.

      그래서 짝수는 1로 리턴, 홀수는 홀수 그대로 리턴, 모두 곱하면 홀수만 곱하는 결과가 된다. 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        int c = Integer.parseInt(st.nextToken());

        if(a%2==0 && b%2==0 && c%2==0)
            System.out.println(a*b*c);
        else {
            System.out.println(checkOddEven(a)* checkOddEven(b) *checkOddEven(c));
        }
    }

    private static int checkOddEven(int num) {
        if(num%2==1) // 홀수면
            return num;
        else return 1;
    }

}
728x90