https://www.acmicpc.net/problem/2164
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
이전에 풀었던 경험이 있는데 한번 더 풀어보았다
전체코드
#include <iostream>
#include <queue>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int N;
cin >> N;
queue<int> card;
for (int i = 0; i < N; i++) {
card.push(i+1);
}
while (card.size() != 1) { //카드가 하나 남을 때까지 반복
card.pop(); //제일 위의 카드를 버린다
card.push(card.front()); //젤 위의 카드를 제일 아래로 옮긴다.
card.pop(); //옮겼으니 삭제
}
cout << card.front(); //남아 있는 카드 출력
return 0;
}
풀이 설명
- 문제의 "제일 위의 카드를 버린다.", "젤 위의 카드를 제일 아래로 옮긴다." 등의 문장을 보고 바로 큐를 써야겠구나 생각 ! 💡 queue의 pop은 가장 첫번째 값을 삭제하는 메소드다
- 입력받은 정수 N으로 1~N 큐 생성
- 해야하는 일 정리
행동 1 : 제일 위의 카드를 버린다 card.pop();
행동 2 : 젤 위의 카드를 제일 아래로 옮긴다. -> 2가지 행동으로 나누어 진행
1. 제일 위에 있는 카드를 맨 뒤에 저장 card.push(card.front());
2. 저장해준 맨 앞 카드는 삭제 card.pop();
이 코드를 카드가 하나 남을 때까지 진행
while (card.size() != 1)
4. 출력
번외 ..
1달전엔... 무려 6번의 도전을 했지만 오늘은 1번에 엄청 빨리 풀어냈다. 나 성장한건가... 두근
다시 풀어보니 매우 간단한 문제!! 그냥 큐 연습 문제였다.
'🖥️ 오늘의 백준' 카테고리의 다른 글
백준 1978번 : 소수 찾기 [Java, C++] (0) | 2023.05.20 |
---|---|
백준 10866번 : 덱 [C++] (0) | 2023.05.14 |
백준 1158번 : 요세푸스 문제 [Python] (0) | 2023.05.14 |
백준 18258번 : 큐 2 | 예외처리 [C++] (2) | 2023.05.10 |
백준 9012번 : 괄호 [Python] (0) | 2023.05.09 |