728x90
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 = '')
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[Python] 16956번 늑대와 양 (0) | 2022.09.13 |
---|---|
[Python] 1551번 수열의 변화 (0) | 2022.09.13 |
[Python] 2022번 사다리 (0) | 2022.09.13 |
[Python] 9663번 N-Queen (추후 보강 예정) (0) | 2022.09.13 |
[Python] 1069번 집으로 (0) | 2022.09.12 |