-
[백준/Java] 2577번 - 숫자의 개수Problem Solving 2022. 3. 27. 01:27
입력받은 세 수를 곱한 다음 그 결과값에 0부터 9까지의 숫자가 각각 몇 개 있는지 세어야 하는 문제다.
코드가 눈으로 보기에 조금 길어지긴 했지만, 이 경우 switch 문을 쓰는 것이 가장 깔끔해 보였다.
다음과 같은 과정으로 해결했다.
1. 세 정수를 입력 받고 이들을 곱한다.
2. 갯수를 넣을 길이 10짜리 빈 배열을 만든다.
3. switch 문으로 특정 숫자가 나올 때마다 앞서 만든 배열의 해당하는 인덱스가 가진 값에 1을 더한다.
4. 배열을 줄 단위로 출력한다.
import java.io.*; public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int a = Integer.parseInt(br.readLine()); // 세 정수 입력받기 int b = Integer.parseInt(br.readLine()); int c = Integer.parseInt(br.readLine()); int num = a * b * c; // 세 수의 곱 int[] arr = new int[10]; // 숫자 0~9의 개수 세기 위한 빈 배열 while (num > 0) { switch(num%10) { // 10으로 나눈 나머지는 1의 자리 case 0: arr[0]++; break; case 1: arr[1]++; break; case 2: arr[2]++; break; case 3: arr[3]++; break; case 4: arr[4]++; break; case 5: arr[5]++; break; case 6: arr[6]++; break; case 7: arr[7]++; break; case 8: arr[8]++; break; case 9: arr[9]++; break; } num /= 10; // 몫이 0이 될 때 까지 나누기 } for (int j=0;j<10;j++) System.out.println(arr[j]); // 각 숫자 개수 담긴 배열 출력 } }
처음에 쓸데없이 num의 길이를 구하는 구문을 넣고 그 길이를 구해 for 문 조건에 넣고 그 안에서 switch를 돌리려고 했는데, 그럴 필요 없이 while 문으로 num을 나눈 값이 0이 될 때 까지 돌리면 된다는 걸 깨닫고 수정했다.
오늘 문제풀이는 여기까지 하고 OS 강의 하나 듣고 자야겠다.
'Problem Solving' 카테고리의 다른 글
[백준/Java] 1546번 - 새로운 평균 (0) 2022.03.27 [백준/Java] 3052번 - 42로 나눈 나머지 가짓수 세기 (0) 2022.03.27 [백준/Java] 2562번 - 최댓값 및 그 인덱스 찾기 (0) 2022.03.26 [백준/Java] 10818번 - 숫자열에서 최소/최대값 찾기 (0) 2022.03.26 [백준/Java] 1110번 - 더하기 사이클 (0) 2022.03.26