본문 바로가기

백준

2605)줄 세우기

https://www.acmicpc.net/problem/2605


줄 세우는 방법이 특이하지만 어려운 문제는 아니다.


줄을 서는 사람은 숫자를 받게 되는데 그 수만큼 앞으로 가면 된다.


삽입 정렬을 약간 응용했다.


수를 입력받았을 때 입력받을 위치에서 그 수만큼 앞쪽에서 입력받아야 한다.


예를들어 순서대로 0 1 1 3 2를 받았다고 치자.


4번째 학생이 받은 번호는 3이기 때문에 4가 저장될 위치는 t에서 3칸 앞에 있다..


삽입 위치부터 한 칸씩 밀어내면 된다.


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
#include<stdio.h>
 
int main() {
    int n;
    int *arr;
    int input;
    int j,t = 0;
 
    scanf("%d",&n);
    arr = (int *)calloc(n,sizeof(int));
 
    for (int cnt = 1; cnt <= n;cnt++) {
        scanf("%d",&input);
 
        j = t - 1;
 
        while (j >= t - input) {
            arr[j + 1= arr[j];
            j--;
        }
        arr[j + 1= cnt;
        t++;
    }
 
    for (int i = 0; i < n;i++) {
        printf("%d ",arr[i]);
    }
    printf("\n");
 
    return 0;
}
cs




'백준' 카테고리의 다른 글

2607)비슷한 단어  (0) 2019.02.12
2606)바이러스  (0) 2019.02.12
2309)일곱난쟁이  (0) 2019.02.11
2217)로프  (0) 2019.02.11
2290)LCD Test  (0) 2019.02.10