Developing Myself Everyday
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

문제와 관련된 내용은 위의 링크에서 확인할 수 있습니다.


 

 

 

 

나의 풀이

이 문제는 특별할 것이 따로 없는, 단순한 계산문제입니다. 

 

문제에서는 사이클을 돌리면서 배열의 요소를 움직이라고 합니다. 각각의 요소들은 앞에서 뒤로 이동하고 이러면서 많은 시간이 걸리게 됩니다.

 

그렇기 때문에 이를 방지하기 위해서 index를 사용하고 감소시킬 숫자를 가리킵니다. 이렇게 되면 배열을 실제로 움직이지 않고도 index를 움직인 것 만으로 동일한 효과를 얻을 수 있게 됩니다.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class Solution {
    public static void main(String args[]) throws Exception {
        Scanner sc = new Scanner(System.in);

        for (int k = 0; k < 10; k++) {
            int test_case = sc.nextInt();
            int[] datas = new int[8];

            for (int i = 0; i < 8; i++) {
                datas[i] = sc.nextInt();
            }

            List<String> passwords = findPassword(datas);
            String message = String.join(" ", passwords);

            System.out.println("#" + test_case + " " + message);
        }
    }

    static List<String> findPassword(int[] datas) {
        int index = 0;
        while (true) {
            boolean codeCheck = false;
            for (int i = 1; i <= 5; i++) {
                datas[index] -= i;

                if (datas[index] <= 0) {
                    datas[index] = 0;
                    codeCheck = true;
                }

                if (index == 7) {
                    index = 0;
                } else {
                    index++;
                }

                if (codeCheck) {
                    break;
                }
            }

            if (codeCheck) {
                break;
            }
        }

        List<String> passwords = new ArrayList<>();
        for (int i = 0; i < 8; i++) {
            passwords.add(Integer.toString(datas[index]));

            if (index == 7) {
                index = 0;
            } else {
                index++;
            }
        }

        return passwords;
    }
}
profile

Developing Myself Everyday

@배준형

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!