반응형
문제
https://www.acmicpc.net/problem/2164
큐를 이용해 pop과 push를 통해 구현할수 있다.
이번에도 top위치를 바꿔가며 구현했다.
큐를 구현하지 않아도 일정한 규칙이 있어 배열을 사용하지 않고도 답을 찾을 수 있을거
같다.먼저 top를 이용한 큐를 이용하여 답을 구하고 규칙을 찾아내어 큐를 사용하지 않고
답을구해봤다.
1 2 3 4 5 6 7 8 9 10 | n=int(input()) card_list=[i for i in range(1,n+1)] top=0 while n-1>0: n-=1 top += 2 card_list.append(card_list[top-1]) print(card_list[top]) | cs |
규칙을 살펴보면
1 1
----------------------------
2 2
----------------------------------
3 2
4 4
-----------------------------------
5 2
6 4
7 6
8 8
---------------------------------------------------------
9 2
10 4
11 6
12 8
13 10
14 12
15 14
16 16
이런식으로 끊어보면 규칙을 찾을수 있다.
코드로 구현해 보면
1 2 3 4 5 6 7 8 9 10 | n=int(input()) tmp=n count=0 while tmp>1: tmp=tmp//2 count+=1 if n==2**count:##2의 제곱수일때 print(n) else: print(2*(n-(2**count))) | cs |
조금은 지저분해 보이지만 규칙이 보이는대로 작성했다.
더짧게 작성할수도 있을거같지만 다음에...
반응형
'알고리즘(python) > 자료구조' 카테고리의 다른 글
[Python]Queue 백준 1966 (0) | 2020.01.17 |
---|---|
[Python]Queue 백준 11866 (0) | 2020.01.16 |
[Python]Queue 백준 18258 (0) | 2020.01.15 |
[Python]Stack 백준 1874 (0) | 2019.12.15 |
[Python]Stack 백준 4949 (0) | 2019.12.14 |
최근댓글