2022년 8월 21일에 작성
https://www.acmicpc.net/problem/2161
2161번: 카드1
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
문제 분석
큐(queue) 자료 구조를 이용한 문제이다.
큐(queue)는 선입선출, FIFO(First In First Out) 기반의 매우 유명한 자료 구조이다. 큐를 사용하면 데이터를 추가한 순서대로 제거할 수 있다.
pop(), append() 함수를 이용하여 문제를 푼다.
소스 코드 (⭕)
N = int(input()) # 정수 N 입력받기
card = list(range(1, N+1)) # card 리스트에 1부터 N까지 넣기
cardx = [] # 카드 버릴 빈 리스트 만들기
while True: # 무한 반복문
cardx.append(card.pop(0)) # 제일 위에 있는 카드를 버린다.
if not card: # 남은 card가 없으면 멈춘다.
break
card.append(card.pop(0)) # 제일 위에 있는 카드를 제일 밑으로 옮긴다.
print(*cardx) # cardx에 있는 요소들 출력
코드 분석
1. 정수 N 입력받고, card 리스트를 만들어서 1부터 N까지 넣는다.
2. 버릴 카드를 담을 빈 리스트 cardx를 만들어 준다.
3. card.pop(0)으로 card의 첫번째 요소를 제거하고, append로 그 요소를 cardx에 추가한다.
4. 만약, 위에서 card를 pop 했을 때 card가 비었으면 반복문을 멈춘다.
5. card의 첫 번째 요소(위)를 card의 마지막 요소(아래)로 옮긴다.
6. 마지막으로 cardx에 있는 요소를 출력한다.
✍️print(*변수)~ 리스트 요소 한번에 출력하기
>>> arr = [1, 2, 3, 4]
>>> print(arr)
[1, 2, 3, 4]
>>> for i in arr:
print(i, end = " ")
1 2 3 4
>>> print(*arr)
1 2 3 4
리스트를 대괄호와 콤마 없이 출력하고 싶을 때
보통 for 문을 사용하지만, print(*리스트변수명)으로도 간단하게 출력할 수 있다.
end
저번엔 스택 이번엔 큐 자료구조 문제 풀어봤다.
쉬운 문제만 풀다가 갑자기 어려운 문제 풀려니 힘들지만 어려운 문제를 풀어봐야 더 많은 도움이 되는 것 같다.
'코딩테스트 & 문제 풀이' 카테고리의 다른 글
[Python]백준_1547 : 공 (0) | 2023.06.23 |
---|---|
[Python]백준_15828 : Router (0) | 2023.06.22 |
[Python]백준_10773 : 제로 (0) | 2023.06.02 |
[C]백준_17608 : 막대기 (0) | 2023.06.01 |
[Python]프로그래머스_Lv1 : 두 개 뽑아서 더하기 (0) | 2023.06.01 |
2022년 8월 21일에 작성
https://www.acmicpc.net/problem/2161
2161번: 카드1
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
문제 분석
큐(queue) 자료 구조를 이용한 문제이다.
큐(queue)는 선입선출, FIFO(First In First Out) 기반의 매우 유명한 자료 구조이다. 큐를 사용하면 데이터를 추가한 순서대로 제거할 수 있다.
pop(), append() 함수를 이용하여 문제를 푼다.
소스 코드 (⭕)
N = int(input()) # 정수 N 입력받기
card = list(range(1, N+1)) # card 리스트에 1부터 N까지 넣기
cardx = [] # 카드 버릴 빈 리스트 만들기
while True: # 무한 반복문
cardx.append(card.pop(0)) # 제일 위에 있는 카드를 버린다.
if not card: # 남은 card가 없으면 멈춘다.
break
card.append(card.pop(0)) # 제일 위에 있는 카드를 제일 밑으로 옮긴다.
print(*cardx) # cardx에 있는 요소들 출력
코드 분석
1. 정수 N 입력받고, card 리스트를 만들어서 1부터 N까지 넣는다.
2. 버릴 카드를 담을 빈 리스트 cardx를 만들어 준다.
3. card.pop(0)으로 card의 첫번째 요소를 제거하고, append로 그 요소를 cardx에 추가한다.
4. 만약, 위에서 card를 pop 했을 때 card가 비었으면 반복문을 멈춘다.
5. card의 첫 번째 요소(위)를 card의 마지막 요소(아래)로 옮긴다.
6. 마지막으로 cardx에 있는 요소를 출력한다.
✍️print(*변수)~ 리스트 요소 한번에 출력하기
>>> arr = [1, 2, 3, 4]
>>> print(arr)
[1, 2, 3, 4]
>>> for i in arr:
print(i, end = " ")
1 2 3 4
>>> print(*arr)
1 2 3 4
리스트를 대괄호와 콤마 없이 출력하고 싶을 때
보통 for 문을 사용하지만, print(*리스트변수명)으로도 간단하게 출력할 수 있다.
end
저번엔 스택 이번엔 큐 자료구조 문제 풀어봤다.
쉬운 문제만 풀다가 갑자기 어려운 문제 풀려니 힘들지만 어려운 문제를 풀어봐야 더 많은 도움이 되는 것 같다.
'코딩테스트 & 문제 풀이' 카테고리의 다른 글
[Python]백준_1547 : 공 (0) | 2023.06.23 |
---|---|
[Python]백준_15828 : Router (0) | 2023.06.22 |
[Python]백준_10773 : 제로 (0) | 2023.06.02 |
[C]백준_17608 : 막대기 (0) | 2023.06.01 |
[Python]프로그래머스_Lv1 : 두 개 뽑아서 더하기 (0) | 2023.06.01 |