반응형
백준 2161번 문제 카드1
https://www.acmicpc.net/problem/2161
2161번: 카드1
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
큐를 사용하는 문제이다.
문제 풀이
전체 갯수 입력받고 데이터 입력받을 배열과 결과값 넣을 배열 생성
throw : 카드를 버릴 차례라면 True, 뒤로 넣을 차례라면 False를 담는 변수
데이터 배열 data에 값이 계속 추가되므로
data의 현재 길이를 이용해 data배열이 끝날때까지 반복하도록 함
해답 코드 python
#2161 #comm. 파이썬 que문제는 deque활용해보기
from sys import stdin
#전체 개수 입력
n = int(input())
#입력 받은 n값을 크기로, 데이터 입력받을 배열 생성
data = [0]*n
##result[0]*n
#결과값을 하나씩 넣을 배열 선언
result=[]
#데이터 입력
for i in range(0,n) :
data[i] = i+1
#print(data)
#카드를 버릴 차례라면 True, 뒤로 넣을 차례라면 False
throw = True
#data배열이 끝날때까지 반복하도록 함
i=0
while i<len(data) :
#print("이번 숫자는 " + str(data[i]))
if throw :
#카드를 버릴 차례
result.append(data[i])
elif not throw :
#뒤로 넣을 차례
data.append(data[i])
throw = not throw
i+=1
##결과값을 한 줄에 출력
ans=""
for r in result :
ans = ans+str(r)+" "
print(ans)
##print(n+n//2)
Comment
파이썬으로 큐와 관련된 문제를 풀 때
from collection import deque 를 많이 쓴다고 함
나는 저런 게 있는지도 몰랐다^^ 다음부턴 활용하기
.reverse()
.join()
.pop()
[::-1]
그리고 문자열 사이 {} 자리에 변수값 넣을 수 있게 해주는 그.. 생각도 안나네 m어쩌구
그리고 코드 한줄로 입력받아서 배열 만드는 거
등등 내가 모르는 게 너무 많았다~!
쓰던 것만 쓰지 말고 여러가지를 활용하자.
손으로 만들기 전에 있는지 찾아보자!
반응형
'DSA > Algorithm' 카테고리의 다른 글
[백준 2231] 분해합 Python 완전탐색(브루트포스) (0) | 2021.09.26 |
---|---|
[백준 2798] 블랙잭 Python 완전탐색(브루트포스) (0) | 2021.09.26 |
[백준 15829] Hashing 해싱 Python 해시 (0) | 2021.09.26 |
[백준 12605] 단어순서 뒤집기 Python 스택 (0) | 2021.09.14 |
[백준 17608] 막대기 Python 스택 (0) | 2021.09.14 |