문제
https://www.acmicpc.net/problem/17827
걸린 시간
01 : 46 : 53
풀이
C++
#include <bits/stdc++.h>
#define INF 987654321
typedef long long ll;
using namespace std;
int n, m, v, k;
vector<int> c;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m >> v;
c.resize(n);
for(int& i : c) cin >> i;
for(int i = 0; i < m; i++){
cin >> k;
if(k <= v-1)
cout << c[k] << "\n";
else
cout << c[(v-1)+((k-(v-1))%(n-v+1))] << "\n";
}
return 0;
}
올바른 수식을 만들어야 하는 수학 문제이다.
풀이에 시간이 많이 걸렸는데 다음과 같은 습관들을 들인다면 시간을 줄여 나갈 수 있을 것 같다.
- 문제의 설명과 구현에서 인덱스 차이가 나지 않도록 수정하고 시작하기.
- 작은 테스트 케이스를 손으로 풀어보고 올바른 결과값으로부터 수식 유추하기.
- 선형 그래프로 나타내어 문제 단순화하기.
'Baekjoon' 카테고리의 다른 글
Baekjoon 9322번 철벽 보안 알고리즘 (0) | 2020.09.17 |
---|---|
Baekjoon 17877번 Integer Division (0) | 2020.09.16 |
Baekjoon 11562번 백양로 브레이크 (0) | 2020.09.14 |
Baekjoon 18352번 특정 도시의 거리 찾기 (0) | 2020.09.14 |
Baekjoon 4811번 알약 (0) | 2020.09.12 |
댓글