반응형
https://www.acmicpc.net/problem/15501
시작 위치와 방향을 잡은 뒤, 그 방향대로 쭉 가면 "good puzzle"이었습니다.
#include <cstdio>
int n, m, a[1000000], s, dir, f = 1;
int startIndex(int mm) {
for (int i = 0; i < n; i++)
if (a[i] == mm) return i;
return -1;
}
int main() {
scanf("%d", &n);
for (int i = 0; i < n && scanf("%d", &a[i]); i++);
for (int i = 0; i < n && scanf("%d", &m); i++) {
if (i > 1) {
s = dir ? (s + 1) % n : (s - 1 + n) % n;
if (m != a[s]) {
f = 0;
break;
}
}
else if (i == 0) s = startIndex(m); // 시작위치
else { // i==1 방향잡기
int leftVal = s == 0 ? a[n - 1] : a[s - 1];
dir = leftVal == m ? 0 : 1;
s = dir ? (s + 1) % n : (s - 1 + n) % n;
}
}
printf("%s puzzle", f ? "good" : "bad");
}
반응형
'Algorithm' 카테고리의 다른 글
백준 10830 : 행렬 제곱 (0) | 2021.11.11 |
---|---|
백준 6137 : 문자열 생성 (0) | 2021.11.11 |
백준 1713 : 후보 추천하기 (0) | 2021.11.11 |
백준 2866 : 문자열 잘라내기 (0) | 2021.11.11 |
백준 10546 : 배부른 마라토너 (0) | 2021.11.11 |