| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- 코테
- 네트워크 관리사 2급
- 리얼클래스
- 신문 스크랩
- KT
- Java
- SSAFY
- 인앱결제
- 코딩테스트 연습
- 싸피셜
- 신문스크랩
- 네트워크 관리사 2급 실기
- IT 동향
- 구글
- 백준위
- SSAFY 7기
- 프로그래머스
- html
- it 뉴스
- 코딩테스트
- java 객체지향 프로그래밍
- it 이슈
- 네트워크 관리사
- python
- 싸피
- 백준
- 카카오
- IT 트렌드
- 우테코
- SSAFYcial
Archives
- Today
- Total
개발자일걸요..?
1021번 회전하는 큐 본문
728x90
반응형
문제 링크 : www.acmicpc.net/problem/1021
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net

<알고리즘>
1) queue/deque에 1~N까지의 숫자를 차례대로 입력
2) 찾고자 하는 수 역시 차례대로 vector에 입력
3) 찾고자 하는 숫자가 0이 될때까지 아래 반복
3-1) queue의 첫번째 값이 vector에 첫번째 값과 같으면 둘다 pop
3-2) queue의 첫번째 값이 vector에 첫번째 값과 다르면 찾고자 하는 값이 queue의 어디에 있는지 index 파악
3-3) index와 queue의 사이즈 비교를 통해 해당 값의 오른쪽에 값이 많으면 2번연산
3-4) index와 queue의 사이즈 비교를 통해 해당 값의 왼쪽에 값이 많으면 3번연산
4) vector의 size가 0이 되면 종료 & 2,3번 연산 실행 횟수 count 출력
STL <deque> 이용 ( 메모리 : 2016KB 시간 : 0ms)
#include <iostream>
#include <vector>
#include <deque>
using namespace std;
int main() {
int N = 0;
int M = 0;
cin >> N >> M;
vector<int>number(M);
int a = 0;
for (int i = 0; i < M; i++) {
cin >> a;
number[i] = a;
}
deque<int>dq;
for (int i = 1; i <= N; i++) {
dq.push_back(i);
}
int count = 0;
while (number.size() != 0) {
//1번 연산
if (number.front() == dq.front()) {
number.erase(number.begin());
dq.pop_front();
}
else {
int index = 0;
for (int k = 0; k < dq.size(); k++) {
if (dq[k] == number.front()) {
index = k;
}
}
//2번연산
if ((dq.size()-index)>(dq.size()/2)) {
++count;
dq.push_back(dq.front());
dq.pop_front();
}
//3번 연산
else {
++count;
dq.push_front(dq.back());
dq.pop_back();
}
}
}
cout << count << "\n";
return 0;
}
반응형
'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글
| 1920번 수 찾기 (0) | 2021.02.28 |
|---|---|
| 5430번 AC (0) | 2021.02.27 |
| 10866번 덱 (0) | 2021.02.26 |
| 1966번 프린트 큐 (0) | 2021.02.25 |
| 11866 요세푸스 문제0 (0) | 2021.02.25 |
Comments