1225 암호 생성기
본문 바로가기
알고리즘 모음집/알고리즘 (Algorithm)

1225 암호 생성기

by KyeongMin 2020. 2. 27.
728x90
반응형
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
int n;
int arr[9];
int retIdx;
struct Screat {
	Screat() {
		int t;
		while (cin >> t) {
			init();
			for (int i = 0; i < 8; i++) {
				scanf("%d",&arr[i]);
			}
				arrCircle();
			printf("#%d ", t);
			int cnt = 0;
			for (int i = 0; i < 8; i++) {
				printf("%d ", arr[retIdx++]);
				if (retIdx == 8)retIdx = 0;
			}
			printf("\n");
		}
	}
	void init() {
		memset(arr, 0, sizeof(arr));
		retIdx = 0;
	}
	void arrCircle() {
		int num = 1;
		int flag = 0;
		while (1) {
			for (int i = 0; i < 8; i++) {
				arr[i] -= num;
				if (arr[i] <= 0) {
					arr[i] = 0;
					retIdx = i;
					retIdx++;
					if (retIdx == 8)retIdx = 0;
					return;
				}
				num++;
				if (num == 6)num = 1;
			}
		}
	}
}Screat;
int main(void) {
	return 0;
}

 

암호 생성기 방식이 1 - 5까지 빼주면서 뒤로 보내는것인데 굳이 그럴필요가 없다 이방식만 알고 있다면 쉽게 구현이 

가능합니다. 그것에 대해서 설명해 드리자면 그냥 무한 반복을 시켜서 1-5 까지 순서대로 돌아가면서 빼줍니다

그러니까 

 0  1  2   3   4  5 인 배열이 있을때

-1 -2 -3 -4  -5  -1
-2 -3 -4 -5  -1  -2

계속 무한 반복을 시키고 탈출 조건을 0이되는 값이 나오는 시점으로 잡고

그곳이 위의 예제에서 2가 0이됬으면 3의 값을 리턴을 해주고 3 4 5 0 1 2 를 출력하면됩니다.

이렇게 듣고 보니 쉽지 않나요 위의 구현정도는 가볍게 해주셔야 합니다. 처음은 어려울 수 있지만 알고리즘은 끈기와 노력아니겠습니까? 

오늘은 여기까지이고 여러분들도 더 쉽게 도전해보세요 !!!

728x90
반응형

댓글