2346번: 풍선 터뜨리기
1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선
www.acmicpc.net
1. 사용한 풍선은 표시해두고, 지나가더라도 카운트하지 않는다
2. 양 끝 간 이동 처리를 위해, 증감시 N으로 나머지 연산
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args)throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = pint(br.readLine());
int[] num = new int[N];
boolean[] chk = new boolean[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
num[i]=pint(st.nextToken());
}
int cur=0;
sb.append(cur+1).append(" ");
int move = num[cur];
chk[cur]=true;
for (int i = 1; i < N; i++) {
int cnt=0;
while(cnt<Math.abs(move)) {
if(move>0) {
cur++;
cur%=N;
if(chk[cur])continue;
}
else {
cur--;
cur+=N;
cur%=N;
if(chk[cur])continue;
}
cnt++;
}
sb.append(cur+1).append(" ");
move = num[cur];
chk[cur]=true;
}System.out.println(sb);
}
static int pint(String s) {
return Integer.parseInt(s);
}
}
