본문 바로가기

알고리즘/백준 문제 풀이

[Python] 21313번 문어

728x90

21313번: 문어 (acmicpc.net)

 

21313번: 문어

문어에게 여덟개의 팔이 있다는 사실은 잘 알려져 있다. 하지만 문어들이 자신의 팔들을 1번, 2번, 3번, ..., 8번이라고 부른다는 말은 오늘 처음 들었을 것이다! 단, 시계방향으로 오름차순이라던

www.acmicpc.net


 

22/09/03

 

 

그룹에서 연습문제로 같이 풀었던 문제 중 하나이다. 간단한 그리디 문제로 쉽게 풀 수 있었다.


 

문제 접근 방식:

 

 

예제 입력을 보고 짝수일 때의 경우를 쉽게 유추할 수 있었다.

 

붙어있는 배열의 두 원소가 서로 다르고, 그 배열들 중에서 제일 사전 순으로 앞서는 것을 출력하면 되므로, 그리디적인 방법으로 보았을 때, 1과 2가 반복되는 문자열을 출력만 하면 된다.

 

홀수일 때의 경우는 짝수일 때의 경우에서 3만 덧붙이면 된다.

 

그 이유는 맨 끝과 맨 처음이 달라야 하는데, 만약 1 2만 반복하면 1로 끝나서 맨 끝과 맨 처음이 같기 때문이다.


아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.

더보기
# 21313번 문어
N = int(input())
if N % 2 == 0:
    print('1 2 '*(N//2))
else:
    print('1 2 '*(N//2), '3', sep = '')