티스토리 뷰
https://www.acmicpc.net/problem/2161
2161번: 카드1
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
방식은 여러가지가 있다.
나는 처음에 list를 사용하여 해결하였다. 그리고, 알고리즘 분류를 보고 큐로 사용하는게 더 효율적이었겠구나 싶었다.
list와 queue를 여기에서 처음 사용해봐서 해당 글을 작성하였다.
우선 이 문제에 집중해보자.
내가 해결한 방식을 설명하겠다.
1. 큐 또는 리스트에 1~N까지의 수를 전부 순서대로 넣어준다.
2. 문제에 요구하는 대로 실행해준다.
3. 가장 앞에 있는 친구를 출력한다.
4. 다음 칸에 있는 친구를 자료구조의 맨 뒤쪽에 넣어준다(push_back or push)
5. 3번과 4번을 반복한다.
이제 리스트와 큐에 대해 알아보자.
[C++] List 라이브러리
List 라이브러리 - 노드를 통해 만들어진 자료구조이다. 이전에 말했던 vector처럼 배열 구조라고 말하기에는 힘들다. 노드라는 하나의 구조체(클래스)를 생성하여 서로 연결시키는 관계이기 때문
jhcard.tistory.com
[C++] queue 라이브러리
queue는 list자료구조와 매우 유사하다. list에서 파생된 자료구조라 생각하면 편하다. FIFO구조로 first in first out / 먼저 들어간 친구가 먼저 나오게 되는 그런 구조이다. 먼저 list를 이해하고 오는 것
jhcard.tistory.com
다음은 내가 작성한 코드이다. 리스트를 활용한 답과 큐를 활용한 답이 있다.
살펴보면 자료형만 다르고 사용한 함수는 거의 동일하다.
#include <cstdio>
#include <list>
int main(void){
int N; scanf("%d", &N);
std::list<int> l;
for(int i = 1; i<=N; i++) l.push_back(i);
for(int i = 0; i<N; i++){
printf("%d ", l.front());
if(l.empty()) break;
l.pop_front();
l.push_back(l.front());
l.pop_front();
}
}
#include <cstdio>
#include <queue>
int main(void){
int N; scanf("%d", &N);
std::queue<int> q;
for(int i = 1; i<= N; i++) q.push(i);
printf("%d ", q.front());
for(int i = 0; i<N-1; i++){
q.pop();
q.push(q.front());
q.pop();
printf("%d ", q.front());
}
}
'코딩테스트 > Silver 5' 카테고리의 다른 글
[S5] 2822. 점수 계산 (0) | 2022.06.28 |
---|---|
[S5] 7785. 회사에 있는 사람 (0) | 2022.06.27 |
[S5] 5555. 반지 (0) | 2022.06.26 |
[S5] 10826. 피보나치 수 4 (0) | 2022.06.26 |
[S5] 2018. 수들의 합 5 (0) | 2022.06.24 |
- Total
- Today
- Yesterday
- 비트마스킹
- unistd.h
- tsp알고리즘
- 좌표 압축 알고리즘
- 해시맵
- scanf
- 트리보나치
- 플로이드-워셜
- 에라토스테네스의 체
- 분할정복
- bits/stdc++.h
- cin.tie(nullptr);
- portal1
- 확장 유클리드
- ios::sync_with_stdio(false)
- 피보나치
- readInt
- writeInt
- Witcher3
- writeString
- Set
- fastIo
- readString
- 큰 수 계산
- manber myers
- fread
- deque와 vector의 차이
- list
- SCC 알고리즘
- 행렬 멱법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |