SMALL

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이 공백

www.acmicpc.net


  • 문제


  • 문제풀이

만약 입력받는 수 K가 N보다 작다면 K번째 배열을 출력하고 만약 N보다 큰 수가 나온다면 V전까지를 빼고 나머지를 구한뒤 다시 V를 넣고 배열을 출력해준다.


  • 코드 1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>



int main() {
    int n, m, v, x;
    scanf("%d %d %d", &n, &m, &v);
    int* arr = new int[n];
    
    for (int i = 0; i < n; i++) {
        scanf("%d",&arr[i]);
    }
    for (int i = 0; i < m; i++) {
        int q;
        scanf("%d", &q);
        if (q < n) {
            printf("%d\n", arr[q]);
        }
        else {
            int round = n - v + 1;
            q -= v - 1;
            printf("%d\n", arr[q % round + v - 1]);
        }
    }
    return 0;
    
}

  • 후기

태블릿에 노가다로 그려보면서 풀었더니 손이 아프다

LIST

+ Recent posts