[알고리즘] 백준 - 홀짝 칵테일

June·2021년 6월 3일
0

알고리즘

목록 보기
220/260

백준 - 홀짝 칵테일

내 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.Queue;
import java.util.stream.Collectors;

public class baekjoon_21312 {

    static int A, B, C;
    static ArrayList<Integer> cocktails = new ArrayList<>();

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] inputs = br.readLine().split(" ");
        A = Integer.parseInt(inputs[0]);
        B = Integer.parseInt(inputs[1]);
        C = Integer.parseInt(inputs[2]);

        cocktails.add(A);
        cocktails.add(B);
        cocktails.add(C);
        cocktails.add(A * B);
        cocktails.add(B * C);
        cocktails.add(A * C);
        cocktails.add(A * B * C);

        cocktails = (ArrayList<Integer>) cocktails.stream().sorted(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                // 왼작마오
                if (o1 % 2 == 1 && o2 % 2 == 0) {
                    return 1;
                } else if (o1 % 2 == 0 && o2 % 2 == 1) {
                    return -1;
                } else if (o1 % 2 == 0 && o2 % 2 == 0) {
                    return o1 < o2 ? -1 : o1 == o2 ? 0 : 1;
                } else {
                    return o1 < o2 ? -1 : o1 == o2 ? 0 : 1;
                }
            }
        }).collect(Collectors.toList());
        System.out.println(cocktails.get(cocktails.size() - 1));
    }
}

comparator를 구현하는 것과, stream을 쓰는 것이 익숙하지 않다. IDE가 없었으면 못했을 것 같다.

다른 사람 풀이

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		
		int A = scanner.nextInt();
		int B = scanner.nextInt();
		int C = scanner.nextInt();
		
		int maximum = 1;
		if (A % 2 != 0) {
			maximum *= A;
		}
		if (B % 2 != 0) {
			maximum *= B;
		}
		if (C % 2 != 0) {
			maximum *= C;
		}
		if (A % 2 == 0 && B % 2 == 0 && C % 2 == 0) {
			maximum = A * B * C;
		}
		System.out.println(maximum);
	}
}

홀수가 하나라도 있거나 하나도 없거나이다. 하나라도 있으면, 홀수들만 곱하면 된다. 하나도 없으면 전부 짝수니 전부 곱하면된다.

0개의 댓글