[SWEA] 1225. 암호생성

김휴지 ㅣ 2023. 5. 21. 05:31

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14uWl6AF0CFAYD 

 

SW Expert Academy

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

swexpertacademy.com


접근 방법

일일히 배열을 옮기지 않고 포커싱 하는 인덱스를 옮겨주며 계산했다.

마지막에 인덱스부터 끝까지 그리고 처음부터 인덱스까지 출력하면 해결된다.

 

소스 코드

import java.util.*;
import java.io.*;
 
class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         
        for(int t=1; t<=10; t++) {
        int T = Integer.parseInt(br.readLine());
        int[] num = new int[8];
         
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        for(int i=0; i<8; i++) {
            num[i] = Integer.parseInt(st.nextToken());
        }
        int idx = 0;
        while(num[idx] > 0) {
            for(int i=1; i<=5; i++) {
                num[idx] -= i;
                if(num[idx] <= 0) break;
                idx = (idx+1)%8;
            }
        }
        num[idx] = 0;
        idx = (idx+1)%8;
         
        StringBuilder sb = new StringBuilder();
        sb.append("#" + T);
        for(int i=idx; i<8; i++)
            sb.append(" " + num[i]);
        for(int i=0; i<idx; i++)
            sb.append(" " + num[i]);
        System.out.println(sb.toString());
        }
    }
}