반응형
내 풀이)
#include <iostream>
#include <queue>
using namespace std;
int main()
{
//
// 문제
// 1. 큐를 이용하여 제일 마지막에 남게되는 카드를 구하는 프로그램을 만드시오.
// 입력
// 1. N장의 카드 개수를 입력한다.
// 처리
// 1. N장의 카드 만큼 반복문을 돌려 데이터를 만든다.
// 2. while문을 돌려 남는 카드가 1개가 될때 까지 반복한다.
// 2-1. 제일위의 카드를 버린다.
// 2-2. 제일 위의 카드를 버리고 카드가 1장 뿐이면 while문을 끝낸다.
// 2-3. 두번째 위의 카드를 마지막 카드로 옮긴다.
// 출력
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int N = 0;
cin >> N;
queue<int> que;
for (int i = 1; i <= N; i++)
{
que.push(i);
}
while (1)
{
if (que.size() == 1)
{
break;
}
que.pop();
if (que.size() == 1)
{
break;
}
int num = que.front();
que.pop();
que.push(num);
}
cout << que.front() << "\n";
}
문제점 :
소스를 좀더 간략하게 최적화 할수 있는데 못함
다른 풀이)
#include <iostream>
#include <queue>
using namespace std;
int main(int argc, char**argv) {
ios::sync_with_stdio(0);
cin.tie(0);
queue<int> Q;
int N;
cin >> N;
for(int i=1;i<=N;i++){
Q.push(i);
}
while(Q.size()>1){
Q.pop();
Q.push(Q.front());
Q.pop();
}
cout << Q.front();
return 0;
}
반응형
'알고리즘' 카테고리의 다른 글
[백준 알고리즘 c++] 문제 27.덱 10866 (0) | 2022.09.02 |
---|---|
[백준 알고리즘 c++] 문제 26.요세푸스 문제 0 11866 (0) | 2022.09.02 |
[백준 알고리즘 c++] 문제 24.큐 2 18258 (0) | 2022.09.02 |
[백준 알고리즘 c++] 문제 23.균형잡힌 세상 4949 (0) | 2022.09.02 |
[백준 알고리즘 c++] 문제 22.괄호 9012 (0) | 2022.09.02 |