[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출력
순으로 로테이션이 돌게 됩니다.
감사합니다.
'ET의 공부 > C언어 연습문제[ 코드업 ]' 카테고리의 다른 글
[C언어 코드업 문제풀이] CodeUp 1409 : 기억력 테스트 1 (0) | 2020.04.06 |
---|---|
[C언어 코드업 문제풀이] CodeUp 1407 : 문자열 출력하기 1 (1) | 2020.04.06 |
[C언어 코드업 문제풀이] CodeUp 1403 : 배열 두번 출력하기 (0) | 2020.04.05 |
[C언어 코드업 문제풀이] CodeUp 1402 : 거꾸로 출력하기 3 (0) | 2020.04.05 |
[C언어 코드업 문제풀이] CodeUp 1095 : [기초-1차원배열] 이상한 출석 번호 부르기3(설명) (2) | 2020.04.05 |