2164: 카드 2(백준)
2021. 9. 29. 14:18ㆍ문제연습/알고리즘
반응형
문제 해결 과정)
자료구조 중 하나인 Queue에 대한 개념만 제대로 알고 있다면 쉽게 해결이 가능한 문제였습니다.
코드를 확인하면 다음과 같습니다.
#include <iostream>
#include <queue>
using namespace std;
int main(){
queue<int> card;
int N;
cin>>N;
for(int i=0;i<N;i++)
card.push(i+1); // 큐에 데이터 초기화 작업진행
for(int i=0;i<N;i++){
if(card.size()==1) //남은 카드가 한장일 경우 그 카드의 수를 출력
cout<<card.front();
else{
card.pop();// 맨 위의 카드를 버린다.
card.push(card.front()); // 그 다음의 카드를맨 뒤로 보낸다.
card.pop();
}
}
}
조금 더 보강하자면 scanf 함수는 입력값의 검증 과정이 없어서 Overflow를 일으킬 가능성이 존재합니다.
특히나 문자 배열에서 사용되는 경우 Stack Overflow를 일으켜 의도치 않은 동작을 발생시킬 수 있으므로 보다 안전한 scanf_s 함수를 이용하는 것이 좋겠죠?
아래는 scanf_s 함수의 사용 예제 코드를 작성해 놓았으니 참고 바랍니다.
#include <stdio.h>
int main(){
int a;
scanf_s("%d", &a, sizeof(a));
printf("%d\n", a);
return 0;
}
반응형
'문제연습 > 알고리즘' 카테고리의 다른 글
4673: 셀프 넘버 (0) | 2022.01.16 |
---|---|
11047: 동전 0(백준) (0) | 2022.01.07 |
10733: 제로(백준) (0) | 2021.09.19 |
10828: 스택(백준) (0) | 2021.09.19 |
3. Brute Force (1) (0) | 2020.02.22 |