본문 바로가기
Algorithms/simulation

1225 암호생성기

by OKOK 2018. 10. 26.

주어진 조건 n개의 수를 처리하면 8자리의 암호를 생성할 수 있음.

8개의 숫자를 입력 받음.

첫 번째 숫자를 1 감소한 뒤, 맨 뒤로 보냄

다음 첫 번째 숫자를 2 감소한 뒤 맨 뒤로 ...

이와 같은 작업을 한 사이클이라 한다.

- 숫자가 감소할 때 0보다 작아지는 경우 0으로 유지. 

 

제약 사항

- 주어지는 각 수는 정수 범위를 넘지 않음

- 마지막 암호 배열은 모두 한 자리 수로 구성 됨

 

입력

- 각 테케 첫 줄에 테케 번호 주어짐.

- 그 다음 줄에 8개의 데이터 주어짐.

 

출력

- 테케 번호 출력 후 답을 출력함

#include<stdio.h> //오케이 stdio.h
#define SIZE 8 // 사이즈 8

int a[SIZE]; // 오케이 a 배열 만듬
int main() {
    for (int test = 1; test <= 10; test++) {
        int t; // 테케 받음
        scanf("%d", &t);
        int n, i; 
        for (i = 0; i < SIZE; i++)
            scanf("%d", &a[i]); // a 배열 입력 받음

        for (n = 1, i = 0;; i++, n++) { // 아이와 엔을 ++ 시킴
            if (i == SIZE) // 아이가 8 이면?
                i = 0; 
            if (n == 6) // 엔이 6이면?
                n = 1;
            a[i] -= n; // 에이 아이는 마이너스 엔을 함.
            if (a[i] <= 0) // 0보다 작거나 같으면 주단
                break; // 프로그램 종료 조건
        }
        a[i] = 0; //에이 아이는 0으로 넣음
        
        //a[i]를 맨 뒤로 이동
        for (;;) {
            int temp = a[0];
            for (i = 0; i < SIZE - 1; i++)
            {
                a[i] = a[i + 1];
            }
            a[SIZE - 1] = temp;
            if (temp == 0)
                break;
        }

        printf("#%d ", test);
        for (i = 0; i < SIZE; i++)
            printf("%d ", a[i]);
        printf("\n");
    }
    return 0;
}

'Algorithms > simulation' 카테고리의 다른 글

1240 단순 2진 암호코드  (0) 2018.10.26
1228 암호문1  (0) 2018.10.26
1222 계산기1  (0) 2018.10.26
1217 거듭 제곱  (0) 2018.10.26
1213 String  (0) 2018.10.26

댓글