반응형

   문제

   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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기