본문 바로가기
코딩테스트

[백준] 20309 트리플 소트 - python

by CuckooBird 2023. 1. 30.

백준 실버 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번째 없다고 봤을 때)에는 홀수만 움직여야만 정렬이 가능해지고,

짝수 인덱스에는 짝수만 움직여야만 정렬이 가능해집니다.


후기

이게 맞나 하면서 풀었는데 백점이라 기부니가 좋네요