[C언어 코드업 문제풀이] CodeUp 1405 : 숫자 로테이션

코드업 1405번 숫자 로테이션 문제 풀이 해답입니다.

 

1. 문제 설명

 

n개의 숫자가 입력되면,

n개의 숫자를 왼쪽으로 하나씩 돌려서 출력하시오.

예) 1 2 3 4 5가 입력된 경우,

1 2 3 4 5

2 3 4 5 1

3 4 5 1 2

4 5 1 2 3

5 1 2 3 4

 

2. 입력

 

첫째 줄에 숫자의 개수 n이 입력된다.( 1 <= n <= 1,000)

둘째 줄에 n개의 정수 k가 공백으로 구분되어 입력된다.(1 <= k <= 1,000)

 

3. 출력

 

숫자를 로테이션한 결과를 출력한다.(단, 왼쪽으로만 돌린다.)

 

 

4. 입력 예시

 

5

1 2 3 4 5

 

5. 출력 예시

 

1 2 3 4 5

2 3 4 5 1

3 4 5 1 2

4 5 1 2 3

5 1 2 3 4

 

6. 문제 풀이

 

#include<stdio.h>
 
 
int main(){
    
    int num;
    int buf[1000= {};
 
    scanf("%d",&num);
    
    for(int i =0; i<num; i++){
        scanf("%d"&buf[i]);
    }
  
    int index = 0;
    for(int k = 0; k < num; k++){
        index = k;
        for(int j = 0; j <num; j++){
            
            printf("%d ",buf[index]);
            index++;
            if(index == num){
                index = 0;
            }
        }
        printf("\n");
    }
    
    return 0;
}
 

 

index = k; 를 통해 시작할 위치(출력)을 0~num-1 (k<num) 까지 잡아줍니다.

그 후 입력받은 개수 만큼 출력을 하게 되는데 index가 증가(++)하면서 출력됩니다.

다만 index가 index == num 일경우 0부터 출력하게 됩니다.

 

예를들어 5을 입력하여 5개의 입력(1 2 3 4 5)을 받았다 가정하면

 

k = 0 일때

   index는 0,  buf[0]~ buf[4]까지 1,2,3,4,5, 출력

 

k = 1 일때

    index는 1, buf[1] ~ buf[4]까지 2,3,4,5, 출력후 if문 때문에 0으로 돌아가 buf[0]  1 출력

 

k = 2 일때

    index는 2, buf[2] ~ buf[4] 까지 3,4,5 출력후 if문으로 0으로 돌아가 buf[0],buf[1] 1,2출력

 

순으로 로테이션이 돌게 됩니다.

 

감사합니다.

댓글()