반응형
행운의 바퀴 문제 해결
상덕이가 구매한 행운의 바퀴에는 알파벳 대문자가 적혀 있으며, 바퀴는 시계 방향으로만 돌아갑니다. 상덕이는 바퀴를 연속해서 K번 돌리면서, 화살표가 가리키는 글자가 변하는 횟수와 회전을 멈추었을 때 가리키던 글자를 종이에 적습니다. 이 정보를 바탕으로 바퀴에 적힌 알파벳을 알아내는 문제입니다.
문제 조건
- 시간 제한: 1초
- 메모리 제한: 128MB
- 제출: 8232
- 정답: 2066
- 맞힌 사람: 1465
- 정답 비율: 23.213%
- 문제링크
2840번: 행운의 바퀴
첫째 줄에 마지막 회전에서 화살표가 가리키는 문자부터 시계방향으로 바퀴에 적어놓은 알파벳을 출력한다. 이때, 어떤 글자인지 결정하지 못하는 칸은 '?'를 출력한다. 만약, 상덕이가 적어놓
www.acmicpc.net
입력
- 첫째 줄에 바퀴의 칸 수 N과 상덕이가 바퀴를 돌리는 횟수 K가 주어집니다. (2 ≤ N ≤ 25, 1 ≤ K ≤ 100)
- 다음 K줄에 걸쳐 화살표가 가리키는 글자가 몇 번 바뀌었는지(S), 그리고 회전을 멈추었을 때 가리키던 글자가 주어집니다. (1 ≤ S ≤ 100)
출력
- 마지막 회전에서 화살표가 가리키는 문자부터 시계방향으로 바퀴에 적어놓은 알파벳을 출력합니다. 결정할 수 없는 칸은 '?'로 출력합니다. 조건을 만족하는 바퀴가 없으면 "!"를 출력합니다.
주요 개념
- 회전 처리: 주어진 회전 횟수와 알파벳을 바탕으로 바퀴의 각 칸에 알파벳을 배치합니다.
- 중복 및 불일치 검사: 알파벳 배치 과정에서 중복되거나 일치하지 않는 경우를 검사하여 조건을 만족하는지 확인합니다.
코드 설명 및 주석
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 바퀴의 칸 수 입력
int K = sc.nextInt(); // 바퀴를 돌리는 횟수 입력
char[] ans = new char[N]; // 바퀴에 적힌 알파벳을 저장할 배열
Arrays.fill(ans, '?'); // 초기 상태를 '?'로 채움
int curIndex = 0; // 현재 화살표가 가리키는 위치
while (K-- > 0) {
int backStep = sc.nextInt(); // 화살표가 가리키는 글자가 몇 번 바뀌었는지
char backAlphabet = sc.next().charAt(0); // 회전을 멈추었을 때 가리키던 글자
// 다음 화살표가 가리키는 위치 계산
int nextIndex = ((curIndex - backStep) % N + N) % N;
// 알파벳 배치
if (ans[nextIndex] == '?') ans[nextIndex] = backAlphabet;
else if (ans[nextIndex] != backAlphabet) { // 배치 불가능한 경우
System.out.println("!");
return;
}
curIndex = nextIndex; // 현재 위치 업데이트
}
// 중복 알파벳 검사
boolean[] chk = new boolean[26];
for (int i = 0; i < N; i++) {
if (ans[i] == '?') continue;
if (chk[ans[i] - 'A']) { // 중복된 알파벳이 있는 경우
System.out.println("!");
return;
}
chk[ans[i] - 'A'] = true;
}
// 결과 출력
for (int i = 0; i < N; i++)
System.out.print(ans[(curIndex + i) % N]);
System.out.println();
}
}
반응형
'알고리즘 > 완전 탐색' 카테고리의 다른 글
[백준] 진법 변환 (0) | 2024.04.16 |
---|---|
[백준] ALPS식 투표 (0) | 2024.04.16 |
[백준] 판화 (0) | 2024.04.08 |
[백준] ACM 호텔 (0) | 2024.04.05 |
[백준] 사탕 게임 (0) | 2024.04.04 |