백준 실버 3 - 20309 트리플 소트 python
https://www.acmicpc.net/problem/20309
20309번: 트리플 소트
$N$은 $3, 4, 5$ 중 하나이다.
www.acmicpc.net
코드
100점이 뜬 코드입니다. - 메모리 65900KB | 시간 180ms | 코드 길이 356B
import sys
N = int(sys.stdin.readline().rstrip())
n_list = [0] + list(map(int, sys.stdin.readline().rstrip().split()))
error = 0
for i in range(1, N):
if i % 2 != 0 and n_list[i] % 2 == 0:
error += 1
break
elif i % 2 == 0 and n_list[i] % 2 != 0:
error += 1
break
if error > 0:
print('NO')
else:
print('YES')
연속된 배열 중 3개의 요소를 reverse() 하는 알고리즘을 구현한다는 것인데,
결국은 arr[i] , arr[i+1] , arr[i+2] 가 연속되는 배열이라고 한다면
i 번째와 i+2 번째 인덱스의 요소를 바꾸는 것이라고 보면 됩니다.
그렇게 보고 문제를 본다면 문제가 훨씬 쉬워집니다.
왜냐하면 홀수 인덱스(0번째 없다고 봤을 때)에는 홀수만 움직여야만 정렬이 가능해지고,
짝수 인덱스에는 짝수만 움직여야만 정렬이 가능해집니다.
후기
이게 맞나 하면서 풀었는데 백점이라 기부니가 좋네요
'코딩테스트' 카테고리의 다른 글
[백준] 1431 시리얼 번호 - python (2) | 2023.01.31 |
---|---|
[백준] 2312 수 복원하기 - python (2) | 2023.01.31 |
[백준] 3182 한동이는 공부가 하기 싫어! - python (0) | 2023.01.30 |
[백준] 8911 거북이 - python (2) | 2023.01.29 |
[백준] 16131 기숙사 서바이벌 (Dormvival Games) - python (2) | 2023.01.28 |