Q 2490 윷놀이
💡 문제 요약 및 분석
첫째 줄부터 셋째 줄까지 각 줄에 각각 한 번 던진 윷짝들의 상태를 나타내는 네 개의 정수(0 또는 1)가 빈칸을 사이에 두고 주어질 때, 아래 규칙을 바탕으로 도는 A, 개는 B, 걸은 C, 윷은 D, 모는 E 를 출력한다.
- 도 (0 하나, 1 셋) = A
- 개 (0 둘, 1 둘) = B
- 걸 (0 셋, 1 하나) = C
- 윷 (0 넷) = D
- 걸 (1 넷) = E
💡 알고리즘 설계
입력
while(input < 3)
로 세 개의 문자열을 한 줄씩 입력받는다.
연산
int i = 0; i < string.length(); i += 2
로 2 개씩 건너뛰면서 char 하나씩 추출한다.- ‘0’ 개수를 세어 누적합한다.
- if 문으로 조건에 따라 도개걸윷모 중 하나를 StringBuilder 에 저장한다.
출력
- 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) 이다.