반갑습니다!

[SWEA] 1225 암호생성기 본문

알고리즘 문제 풀이

[SWEA] 1225 암호생성기

김덜덜이 2020. 4. 18. 22:56
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com

문제의 풀이를 들어가기에 앞서 해당 문제는 치명적인 오타가 있다.

  • 숫자가 감소할 때 0보다 작아지는 경우 0으로 유지되며, 프로그램은 종료된다. 이 때의 8자리의 숫자 값이 암호가 된다.

  • 숫자가 감소할 때 0 이하의 경우 0으로 유지되며, 프로그램은 종료된다. 이 때의 8자리의 숫자 값이 암호가 된다.

문제가 아래와 같이 수정되어야 제대로 정답처리가 된다.

풀이

문제에 설명된 규칙대로 구현하면 된다. List를 사용하여 해결하였다.

코드

#include <iostream>
#include <list>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int t = 10;
    list<int> list;
    while (t--) {
        list.clear();
        int num;
        cin >> num;
        for (int i = 0; i < 8; i++) {
            int tmp;
            cin >> tmp;
            list.push_back(tmp);
        }
        int diff = 1;
        while (true) {
            if (diff == 6) diff = 1;
            int next = list.front() - diff;
            list.pop_front();
            if (next <= 0) {
                list.push_back(0);
                break;
            }
            list.push_back(next);
            diff++;
        }
        cout << '#' << num << ' ';
        for (int v : list) cout << v << ' ';
        cout << '\n';
    }
}

'알고리즘 문제 풀이' 카테고리의 다른 글

[SWEA] 2817 부분 수열의 합  (0) 2020.04.18
[SWEA] 1213 String  (0) 2020.04.18
[SWEA] 1215 회문1  (0) 2020.04.18
[SWEA] 2805 농작물 수확하기  (0) 2020.04.18
[백준] 17822 원판 돌리기  (0) 2020.04.18