반응형
풀이
- 해당 문제를 푸는 방법은 다양하게 있을 듯하다.
- 다만 나는 배열을 새롭게 계속 변형하는 것은 효율적이지 않다고 생각하여
- 인덱스를 사용해서 해결하고자 함.
- 다만 처음에 간과했던 부분은 이미 터뜨린 풍선을 지나갈 때
- 카운팅을 해버려서 계속 오답으로 나왔음.
- 그래서 해당 문제를 이후에 깨닫고 나서는
- for문을 거쳐서 하나씩 이동하면서 해당 위치가 이미 터뜨린 풍선의 위치라면
- while문을 거치게 하여 터뜨리지 않은 풍선을 찾으며 해결하고자 하여 해결
import java.util.Scanner;
import java.io.*;
public class _2346 {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = sc.nextInt();
int[] li = new int[N];
boolean[] check = new boolean[N];
for (int i=0; i<N; i++) li[i]=sc.nextInt();
int now = 0;
for (int i=0; i<N; i++) {
check[now] = true;
bw.write((now%N)+1+" ");
if (i!=N-1) {
int next = now;
int x = li[next]>0?1:-1;
for (int j=0; j<Math.abs(li[now]); j++) {
next = next+x>=0?(next+x)%N:next+x+N;
while (check[next]) {
next = next+x>=0?(next+x)%N:next+x+N;
}
}
now = next;
}
}
bw.flush();
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 24060번] 알고리즘 수업 - 병합 정렬 1 (0) | 2024.11.19 |
---|---|
[백준, 자바, 20920번] 영단어 암기는 괴로워 (0) | 2024.11.18 |
[백준, 자바, 13909번] 창문 닫기 (0) | 2024.11.13 |
[백준, 자바, 17103번] 골드바흐 파티션 (0) | 2024.11.13 |
[백준, 자바, 4948번] 베르트랑 공준 (0) | 2024.11.13 |