일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래머스
- IT 트렌드
- 카카오
- 네트워크 관리사 2급
- 싸피셜
- 리얼클래스
- Java
- it 이슈
- KT
- java 객체지향 프로그래밍
- it 뉴스
- 백준
- SSAFY 7기
- 코테
- 신문 스크랩
- 코딩테스트
- 네트워크 관리사 2급 실기
- python
- 인앱결제
- 네트워크 관리사
- SSAFY
- 싸피
- SSAFYcial
- 백준위
- html
- 코딩테스트 연습
- 우테코
- 구글
- 신문스크랩
- IT 동향
Archives
- Today
- Total
개발자일걸요..?
2164번 카드2 본문
728x90
반응형
문제링크 : www.acmicpc.net/problem/2164
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
<알고리즘>
1) 1~N번 카드를 queue에 넣어준다(push)
2) queue의 size가 1보다 클때까지 반복
2-1) 맨 위 카드 빼기(pop)
2-2) queue의 사이즈 확인하고 종료할지 정하기
2-3) 맨 위 카드 맨뒤에 넣어주고 맨 앞에 카드 빼기(push , pop)
3) 하나 남은 queue의 카드 출력
버전 1. STL <vector> 사용 (시간초과)
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N = 0;
cin >> N;
vector <int> v;
for (int i = 1; i <= N; i++) {
v.push_back(i);
}
while (v.size() > 1) {
v.erase(v.begin());
if (v.size() == 1) { break; }
else {
v.push_back(v[0]);
v.erase(v.begin());
}
}
cout << v.front() << "\n";
return 0;
}
버전 2. STL <queue> 사용 ( 메모리 : KB 시간 : ms )
#include <iostream>
#include <queue>
using namespace std;
int main() {
int N = 0;
cin >> N;
queue<int>q;
for (int i = 1; i <= N; i++) {
q.push(i);
}
while (q.size() > 1) {
q.pop();
if (q.size() == 1) { break; }
else {
q.push(q.front());
q.pop();
}
}
cout << q.front() << "\n";
return 0;
}
반응형
'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글
1966번 프린트 큐 (0) | 2021.02.25 |
---|---|
11866 요세푸스 문제0 (0) | 2021.02.25 |
18258번 큐2 (0) | 2021.02.24 |
17298번 오큰수 (0) | 2021.02.23 |
1874번 스택 수열 (0) | 2021.02.22 |
Comments