계수기 만들기
문제 링크 : https://level.goorm.io/exam/43061/%EA%B3%84%EC%88%98%EA%B8%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0/quiz/1
문제 제목 : 계수기 만들기
계수기 만들기제출완료 100점 참여자 207 정답률 64.2% 7 17 문제
각 자리마다 최댓값이 다른 숫자판을 가진 계수기를 만들고자 한다. 이 계수기가 만족해야 하는 요건은 다음과 같다.
계수기는 개의 자릿수를 표시할 수 있다. 번째 자리에는 부터 까지의 숫자를 표시할 수 있다. 버튼을 한 번 누르면 가장 오른쪽 자리의 숫자가 증가한다. 만약 어떤 자리의 숫자가 표시할 수 있는 최댓값보다 커진다면, 숫자를 최솟값 으로 초기화하고 바로 왼쪽 자리의 숫자를 증가시킨다. 가장 왼쪽 자리의 숫자가 최댓값을 넘어갈 때는 왼쪽으로 올림을 전파하지 않는다. 계수기에 표시되는 숫자의 초기 상태가 주어질 때, 번 버튼을 누른 뒤 계수기의 각 자리에 표시되는 숫자를 구해보자.
예제 설명
첫 번째 예제에서 계수기에 표시되는 숫자는 다음과 같이 변한다.
64 → 65 → 66 → 67 → 68 → 70 → 71 → 72
입력 첫째 줄에 계수기의 숫자판의 개수 이 주어진다. 둘째 줄에 각 숫자판의 최댓값을 의미하는 이 공백을 두고 주어진다. 셋째 줄에 각 숫자판의 초기값을 의미하는 이 공백을 두고 주어진다. 넷째 줄에 버튼을 누르는 횟수 가 주어진다.
입력으로 주어지는 모든 수는 정수이다.
출력
번 버튼을 누른 뒤, 계수기에 표시되는 개의 숫자를 공백없이 출력한다.
입/출력 예시 : 공백 : 줄바꿈 : 탭 예시 1 입력 2 78 64 7 출력 72 예시 2 입력 5 86977 14523 361 출력 15074 예시 3 입력 7 4315246 4304200 28174 출력 0112246 ⋇ 입출력 형식을 잘 지켜주세요
문제 풀이
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[] ArrE = new int[N];
String line = br.readLine();
StringTokenizer st = new StringTokenizer(line);
for (int i = 0; i < N; i++) {
ArrE[i] = Integer.parseInt(st.nextToken());
}
int[] ArrS = new int[N];
String line2 = br.readLine();
st = new StringTokenizer(line2);
for (int i = 0; i < N; i++) {
ArrS[i] = Integer.parseInt(st.nextToken());
}
int K = Integer.parseInt(br.readLine());
for(int i = 0; i < K; i++){
ArrS[ArrS.length - 1]++;
for(int j = ArrS.length - 1; j >= 0; j--){
if(ArrS[j] > ArrE[j]){
ArrS[j] = 0;
if(j > 0){
ArrS[j - 1]++;
}
}
}
}
for(int i = 0; i < ArrS.length; i++){
System.out.print(ArrS[i]);
}
}
}
댓글남기기