Java/Java 알고리즘

백준 2476번 주사위 게임 JAVA 구현해보기

kimc 2022. 6. 4. 21:06

```

백준 2476번 주사위 게임 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1. 백준 2476번 풀이

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

 

2476번: 주사위 게임

첫째 줄에는 참여하는 사람 수 N이 주어지고 그 다음 줄부터 N개의 줄에 사람들이 주사위를 던진 3개의 눈이 빈칸을 사이에 두고 각각 주어진다. 

www.acmicpc.net

백준 2476번 주사위 게임은

난이도 브론즈 등급의 문제로서

 

6면 주사위를 3번 던져서

모두 같은 눈이 나오면 10,000원 + 같은 눈 * 1,000원의 상금을 받고

같은 눈이 두개만 나오면 1,000원 + 같은 눈 * 100원의 상금을 받고

같은 눈이 없으면 제일 큰 눈 * 100원의 상금을 받을 때

 

테스트 케이스만큼 눈을 입력받고

가장 큰 상금을 출력해주면 되는 문제입니다.

 


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


간단하게

입력을 받고

조건에 맞춰서 출력하면 되는 문제나

 

뭔가 제가 만든 메서드가 긴 것 같아서

메서드를 쪼개서 클린 코드로 만들어볼까도 생각해봤지만

 

시간 관계상 그냥 제출만 했습니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) throws IOException {
        final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        final int testCase = Integer.parseInt(br.readLine());
        List<String> inputList = new ArrayList<>();
        for (int i = 0; i < testCase; i++) {
            inputList.add(br.readLine());
        }

        System.out.print(solution(inputList));
    }

    public static String solution(List<String> resultList) {
        int maxPrize = resultList.stream().mapToInt(str -> {
            int price = 0;

            List<Integer> list = Arrays.stream(str.split(" "))
                    .map(Integer::parseInt)
                    .collect(Collectors.toList());

            final int eye01 = list.get(0);
            final int eye02 = list.get(1);
            final int eye03 = list.get(2);

            //같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
            if (eye01 == eye02 && eye02 == eye03) {
                price += 10000 + (eye01 * 1000);
            }

            //같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
            else if (eye01 == eye02) {
                price += 1000 + (eye01 * 100);
            } else if (eye01 == eye03) {
                price += 1000 + (eye01 * 100);
            } else if (eye02 == eye03) {
                price += 1000 + (eye02 * 100);
            }

            //모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
            else {
                price += list.stream().max(Comparator.naturalOrder()).get() * 100;
            }

            return price;
        }).max().getAsInt();

        return String.valueOf(maxPrize);
    }
}

// https://codemasterkimc.tistory.com

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90