티스토리 뷰
1. 문제
https://www.acmicpc.net/problem/2164
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
2. 문제 풀이
#include <iostream>
#include <bits/stdc++.h>
#pragma warning (disable:4996)
using namespace std;
int n;
queue<int> q;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++)
q.push(i);
while (1) {
if (q.size() == 1) {
cout << q.front();
break;
}
q.pop();
int top = q.front();
q.pop();
q.push(top);
}
}
3. 문제 해설 및 평가
오랜만에 쉬운 문제를 만났다. 큐를 이용해서 풀 수 있는 문제이다.
그렇지만 코딩 테스트에서 문제를 만난다면, 큐를 사용할지, 스택을 사용할지, 덱을 사용할지를 한번에 생각하지 못할 것 같다. 다양한 문제를 풀면서 연습해야 할 것 같다.
문제 풀이는 다음과 같다.
1. 카드의 구성 상 큐 자료구조가 유리하다. 1부터 N까지 큐를 통해 카드를 쌓는다고 생각하면 편하다.
2. 첫번째 카드는 버리는 것이니, q.pop()를 통해서 버려준다.
3. 두번째 카드는 q.pop()을 통해 버려주고, 밑에 다시 넣어준다. 이때 조심해야 할 점은, q.pop()의 반환값은 없다는 것 이다. C언어로 구현할 때는 pop()의 반환값을 pop해준 해당 값으로 설정하였는데, 헷갈릴 수도 있을 것 같다.
4. 사이즈가 하나 남으면 종료해주고 정답을 출력해준다.
'백준(C++) > 문제풀이' 카테고리의 다른 글
[백준 5430/C++] AC (0) | 2023.07.18 |
---|---|
[백준 1021/C++] 회전하는 큐 (0) | 2023.07.17 |
[백준 2493/C++] 탑 (0) | 2023.07.16 |
[백준 1158/C++] 요세푸스 문제 (0) | 2023.07.15 |
[백준 5397/C++] 키로거 (0) | 2023.07.14 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준 5430
- C++ #알고리즘 #연결리스트
- 코테
- 백준 3986
- 안드로이드 스튜디오
- 백준 2493
- 문제 유형
- 코딩테스트
- 알고리즘 #백준 3273 #C++
- AAR metadata 에러
- #include<bits/stdc++.h> # Visual studio #코딩테스트 꿀팁 #알고리즘 풀이
- Render Problem
- 알고리즘 풀이
- android studio
- 백준 4949
- C++ #알고리즘 #코딩테스트
- 백준1158
- 알고리즘
- 알고리즘 정리
- 백준 1697
- 백준 1021
- 백준 4179
- constraint missing 오류
- 백준 #알고리즘 풀이 #백준 1475
- 백준 7576
- 백준 7569
- C++
- 백준 2178
- 백준 2164
- ViewBinding
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함