알고리즘/BOJ

백준 17827번 달팽이 리스트

꾸준함. 2019. 11. 4. 22:32

문제 링크입니다: https://www.acmicpc.net/problem/17827

 

17827번: 달팽이 리스트

첫째 줄에 노드의 개수 N(2 ≤ N ≤ 200,000), 질문의 횟수 M(1 ≤ M ≤ 200,000), N번 노드가 가리키는 노드의 번호 V(2 ≤ V ≤ N)가 공백으로 구분되어 주어진다. 둘째 줄에 N개의 정수 C1, C2, …, CN이 공백으로 구분되어 주어진다. 이때 Ci는 i번 노드에 저장된 값을 뜻한다. (1 ≤ Ci ≤ 1,000,000) 셋째 줄부터 M개의 줄에 걸쳐 각 질문에 해당하는 K(1 ≤ K ≤ 109)가 주어진다.

www.acmicpc.net

배열의 크기가 최대 200,000이고 쿼리 개수가 최대 1,000,000,000개이기 때문에 브루트포스로는 접근할 수 없는 문제였습니다.

따라서 모듈러 연산을 통해 문제를 풀어야했습니다.

 

#include <iostream>
using namespace std;
const int MAX = 200000 + 1;
int N, M, V;
int arr[MAX];
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M >> V;
for (int i = 0; i < N; i++)
{
cin >> arr[i];
}
int head = --V;
int tempLength = N - head;
for (int i = 0; i < M; i++)
{
int K;
cin >> K;
if (K < head)
{
cout << arr[K] << "\n";
}
else
{
cout << arr[(K - head) % tempLength + head] << "\n";
}
}
return 0;
}
view raw .cpp hosted with ❤ by GitHub

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 17829번 222-풀링  (0) 2019.11.04
백준 17828번 문자열 화폐  (0) 2019.11.04
백준 17826번 나의 학점은?  (0) 2019.11.04
백준 17836번 공주님을 구해라!  (2) 2019.11.04
백준 1799번 비숍  (4) 2019.10.22