본문 바로가기
Language/Java

[백준 | Java] 2490번 윷놀이

by ㅇ달빛천사ㅇ 2025. 1. 25.
728x90
2490번 / 윷놀이

윷놀이

🏷️ 관련 주제 : 구현 배열



💦 나의 시도

Try. 배열과 Stream API를 이용한 방법

  1. 일차원 String 배열 get을 선언하고 윷을 던져 나온 배의 개수를 인덱스로 하여 해당 인덱스에 출력해야할 결과값을 할당
    • 배의 개수를 세어서 배의 개수에 따라(0 ~ 4) 도(A), 개(B), 걸(C), 윷(D), 모(E)를 출력해야합니다.
    • 이 배의 개수를 배열의 인덱스라고 생각하고 String 배열을 만들어 해당 인덱스에 출력할 결과값을 넣기로 하였습니다.
  2. 세 번의 입력을 받아야하므로 0 ~ 2 범위에서 반복문 돌기
    • Stream API를 이용하여 배의 개수를 세고 int front에 할당
    • front를 인덱스로 get에서 출력할 결과값을 꺼내 BufferedWriter에 쓰고 줄바꿈(br.newLine();)
    • 반복문이 끝나고 BufferedWriter를 close()하며 결과값을 출력

💥 런타임 에러(ArrayIndexOutOfBounds)

문제가 쉬워서 당연히 한번에 맞을 줄 알았는데 예외가 났습니다!
문제를 다시 찬찬히 읽어보았습니다.
결과값으로 출력할 값을 String 배열에 넣을 때, 모를 빠뜨렸나봅니다.
String[] get에 "E"를 추가해 주었습니다.

❌ 틀렸습니다.

이번에는 맞을 줄 알았는데... 또 틀렸습니다!
다시 문제를 읽어보았습니다.
윷이 "D"이고 모가 "E"인데 둘을 바꿔서 코드를 작성했습니다.

// 수정 전 String[] get = {"D", "A", "B", "C", "E"};
// 아래가 수정한 코드
String[] get = {"E", "A", "B", "C", "D"};

맞았습니다!!

  • 메모리 : 14392 KB
  • 시간 : 104 ms
  • 코드 길이 : 747 B


📑제출 기록 및 오답 원인

한번에 맞을 수 있는 문제였다고 생각했는데
여러 실수를 하여 세번만에 정답을 맞힐 수 있어서 너무 아쉬웠습니다.
다음부터는 문제를 꼼꼼히 읽어 실수를 하지 않도록 해야겠습니다.

💯 해결 방법

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String[] get = {"E", "A", "B", "C", "D"};
        for (int i = 0; i < 3; i++) {
            int front = (int) Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).filter(x -> x == 0).count();
            bw.write(get[front]);
            bw.newLine();
        }
        bw.close();
    }
}
728x90


Top