

-Code
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 숫자판의 갯수 받기
int n = Integer.parseInt(br.readLine());
// 최대값 배열과 초기값 배열 받기
int[] limit = readNums(br.readLine(), n);
int[] num = readNums(br.readLine(), n);
// 누르는 횟수 받기
int k = Integer.parseInt(br.readLine());
br.close();
// 누르는 횟수만큼 증가
num[n - 1] += k;
// 맨 오른쪽 부터 검사
for (int idx = n - 1; idx >= 0; idx--) {
// 해당 자리수가 제한을 넘지 않으면 탈출
if (num[idx] <= limit[idx]) break;
// 넘으면 0으로 바꾸고 마지막 수가 아니면 다음 자릿수 증가
// 다음 자릿수가 존재하는지 확인
if (idx - 1 >= 0) {
int up = num[idx] / (limit[idx] + 1);
num[idx - 1] += up;
}
num[idx] = num[idx] % (limit[idx] + 1);
}
// 배열의 숫자를 합침
StringBuilder sb = new StringBuilder();
for (int el : num) sb.append(el);
System.out.println(sb);
}
// 중복되는 입력을 제거하기 위한 메소드
private static int[] readNums (String line, int len) {
int[] answer = new int[len];
StringTokenizer st = new StringTokenizer(line);
for (int i = 0; i < len; i++) {
answer[i] = Integer.parseInt(st.nextToken());
}
return answer;
}
}
처음에 문제를 이상하게 이해해서 잘못짰습니다. 다시 이해한 후 맨 오른쪽 수를 클릭만큼 증가하고 오른쪽 부터 왼쪽으로 검사하며 숫자를 증가시키는 방식으로 해결했습니다.
'알고리즘 문제 > Java' 카테고리의 다른 글
| [goormlevel/Java] 블록 게임 (0) | 2026.06.10 |
|---|---|
| [goormlevel/Java] [KOI 2017] 딱지놀이 (0) | 2026.06.09 |
| [goormlevel/Java] 소금물의 농도 구하기 (0) | 2026.06.07 |
| [goormlevel/Java] 인공지능 청소기 (0) | 2026.06.06 |
| [goormlevel/Java] 0커플 (0) | 2026.06.05 |