[python] 백준 2161번 카드1알고리즘/백준2021. 11. 25. 21:18
Table of Contents
문제 풀이
문제에서 N=4인 경우에 버린 카드는 1 3 2가 되고 남는 카드는 4가 되어 출력 결과가 1 3 2 4가 되길래 짝수 홀수로 나누면 될 줄 알았다.
하지만 테스트 케이스 1번에서 출력 결과가 1 3 5 7 4 2 6이 되는 것에 대해서 도무지 이해가 안 되어 결국 그림을 그려 이해를 하고 어떻게 하면 풀 수 있을지를 알아냈다.
그림에서와 같이 cnt 값에 따라서의 2가지의 작업을 돌리면 되었다.
1. cnt가 홀수면 첫 번째 원소 값을 원래 리스트에서 pop 하고 다른 리스트에 append
2. cnt가 짝수면 첫 번째 원소 값을 원래 리스트에 append 하고 원래 리스트에서 첫 번째 위치에 있는 원소 값을 pop
대부분의 사람들은 데크(dequeue)로 푸셨던데 아직 본인은 쓸 줄 몰라 리스트로 구현하였다.
리스트에 값이 있을 때까지 돌려야하는 이유는
위의 1번과 2번 항목을 보면 pop 작업이 있는데 원소가 비어있다면 오류를 발생시키므로 리스트에 값이 들어 있을 때까지만 반복문을 실행시키면 된다.
나머지는 차근 차근 생각해보면 될 것 같다.
완성된 코드!!😊👍
l = [i for i in range(1, int(input())+1)]
result = []
cnt = 1
while l:
if cnt % 2 == 0:
l.append(l[0])
l.pop(0)
else:
result.append(l[0])
l.pop(0)
cnt += 1
print(' '.join(map(str, result)))
'알고리즘 > 백준' 카테고리의 다른 글
[python] 백준 1003번 피보나치 함수 (4) | 2021.12.05 |
---|---|
[python] 백준 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2021.11.26 |
[python] 백준 10845번 큐 (0) | 2021.11.24 |
[python] 백준 1598번 꼬리를 무는 숫자 나열 (0) | 2021.11.23 |
[python] 백준 1076번 저항 (0) | 2021.11.03 |
@펄찌 :: Pearl's Story
펄의 일상이 궁금한 사람 요기~
즐거운 하루 되셨으면 좋겠습니다😊