Q 2490 윷놀이

💡 문제 요약 및 분석

첫째 줄부터 셋째 줄까지 각 줄에 각각 한 번 던진 윷짝들의 상태를 나타내는 네 개의 정수(0 또는 1)가 빈칸을 사이에 두고 주어질 때, 아래 규칙을 바탕으로 도는 A, 개는 B, 걸은 C, 윷은 D, 모는 E 를 출력한다.

  • 도 (0 하나, 1 셋) = A
  • 개 (0 둘, 1 둘) = B
  • 걸 (0 셋, 1 하나) = C
  • 윷 (0 넷) = D
  • 걸 (1 넷) = E

💡 알고리즘 설계

  1. 입력

    • while(input < 3) 로 세 개의 문자열을 한 줄씩 입력받는다.
  2. 연산

    • int i = 0; i < string.length(); i += 2 로 2 개씩 건너뛰면서 char 하나씩 추출한다.
    • ‘0’ 개수를 세어 누적합한다.
    • if 문으로 조건에 따라 도개걸윷모 중 하나를 StringBuilder 에 저장한다.
  3. 출력

    • StringBuilder 로 한 번에 출력한다.

💡 코드

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

public class Main {

    static char check(int sum) {
        if (sum == 1) { // 도
            return 'A';
        } else if (sum == 2) { // 개
            return 'B';
        } else if (sum == 3) { // 걸
            return 'C';
        } else if (sum == 4) { // 윷
            return 'D';
        } else { // 모
            return 'E';
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int input = 0;
        while (input < 3) {
            int sum = 0;
            String line = br.readLine();
            for (int i = 0; i < line.length(); i += 2) {
                char c = line.charAt(i);
                if (c == '0') {
                    sum += 1;
                }
            }
            sb.append(check(sum)).append("\n");
            input++;
        }
        System.out.println(sb);
    }

}

💡 시간 복잡도, 공간 복잡도

시간 복잡도공간 복잡도
O(1)O(1)
  • ⏱️ 반복하는 횟수 3회, 문자열은 2개씩 건너뛰면서 확인하므로 입력당 최대 4개의 숫자를 검사, 조건문은 단순 분기문이므로 1번, 모두 상수 시간이므로 O(1) 이다.

  • 🧠 입력 저장, 연산, 출력 모두 고정 공간을 사용하므로 O(1) 이다.