728x90
반응형
SMALL
문제정보
예제 입력 1
3 3
1 A
2 B
3 C
---> !
슈도 코드
- 임포트
- 메인 메서드 생성
- 전체 배열 크기 N, 회전수 C, 방문 배열 visited
- while문으로 C만큼 반복
- 이동횟수 moveCount, 이동 후 값 AfterMoveValue, 이동 후 위치 curPoint
- 배열을 MoveCount만큼 뒤로 이동한 후의 값이 처음 입력하는 거라면 바로 입력하고 현재 위치를 최신화( ((N-moveCount%N) +N) %N)
- 만약 이미 입력되어 있다면 ‘!’를 출력하고 종료
- 그렇게 모든 반복문이 잘 수행되었다면 중복된 알파벳이 있는지 방문배열을 통해 확인
- 그 이후 curPoint를 시작으로 차례대로 출력하되 환영구조로 %N을 꼭 넣기
주요 규칙
- 환영구조로 움직이는 원형 배열
- 하지만 시계방향으로 움직이므로 인덱스는 ++이 아닌 —가 된다.
- 입력된 배열을 거슬러 올라간다면 인덱스를 ++하며 확인도 가능하다.
- 중복된 알파벳은 존재하지 않아야한다.
- 바퀴의 각칸에는 한 개의 알파벳만 들어갈 수 있다.
구현 코드
package simulation;
import java.util.Arrays;
import java.util.Scanner;
/*
1. 임포트
2. 메인 메서드 생성
3. 전체 배열 크기 N, 회전수 C, 방문 배열 visited
4. while문으로 C만큼 반복
5. 이동횟수 moveCount, 이동 후 값 AfterMoveValue, 이동 후 위치 curPoint
1. 배열을 MoveCount만큼 뒤로 이동한 후의 값이 처음 입력하는 거라면 바로 입력하고 현재 위치를 최신화( ((N-moveCount%N) +N) %N)
2. 만약 이미 입력되어 있다면 ‘!’를 출력하고 종료
6. 그렇게 모든 반복문이 잘 수행되었다면 중복된 알파벳이 있는지 방문배열을 통해 확인
7. 그 이후 curPoint를 시작으로 차례대로 출력하되 환영구조로 %N을 꼭 넣기
*/
public class 행운의바퀴_2840 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int C = sc.nextInt();
char[] arr = new char[N];
int curPoint = 0;
Arrays.fill(arr, '?');
while (C-- > 0) {
int moveCount = sc.nextInt();
char afterMoveValue = sc.next().charAt(0);
int nextPoint = ((curPoint - moveCount) % N + N) % N;
if (arr[nextPoint] == '?') arr[nextPoint] = afterMoveValue;
else if (arr[nextPoint] != afterMoveValue) {
System.out.println("!");
return;
}
curPoint = nextPoint;
}
boolean[] visited = new boolean[26];
for (int i = 0; i < N; i++) {
if(arr[i]=='?') continue;
if(visited[arr[i] - 'A']) {
System.out.println("!");
return ;
}
visited[arr[i] - 'A'] = true;
}
for (int i = 0; i < N; i++) {
System.out.println(arr[(curPoint+i)%N]);
}
}
}
728x90
반응형
SMALL
'문제 풀이 > 백준 문제풀이' 카테고리의 다른 글
[BOJ 2817 - Java] 알프스식 투표 - 구현문제 (0) | 2024.10.18 |
---|---|
[BOJ 3085 - Java] 사탕게임 - 구현문제 (1) | 2024.10.15 |
[BOJ 3085 - Java] 사탕게임 - 구현문제 (0) | 2024.10.15 |
알고리즘 - 위상정렬 (0) | 2024.08.09 |
[BOJ14501 - Java] 퇴사문제 DP로 풀이하기 (0) | 2024.07.28 |