- arr 배열에 0부터 9의 숫자를 담는다.
- 방 번호가 0보다 클 때까지 방 번호를 10으로 나누었을 때 나머지를 k에 넣어주고 k가 6이나 9면 arr[9]가 증가하고 아니면 arr[k]가 증가하며 숫자는 10으로 나누어준다.
- 0~8까지의 숫자 중 최대값 변수와 6 또는 9의 변수 중 최대값을 구해서 출력한다.
// 백준 Silver5 - 1475(방 번호)
// 문제링크: https://www.acmicpc.net/problem/1475
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int ans = 0;
int[] arr = new int[10]; // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 담기
int number = num;
while(number>0) { // num이 0보다 클 때까지
int k =number%10;
if(k==6 || k==9) { // 6이나 9일때 arr[9] 증가
arr[9]++;
}
else {
arr[k]++; // arr[k] 증가
}
number /= 10;
}
int max = 0; // 0~8까지의 숫자중 최대값 변수
for(int i=0; i<arr.length-1; i++) {
if(max <= arr[i]) {
max = arr[i];
}
}
int six_nine = 0; // 6 또는 9
if(arr[9]%2 == 0) { // 짝수 홀수 구분
six_nine = arr[9]/2;
}
else {
six_nine = arr[9]/2+1;
}
ans = (int) Math.max(max, six_nine); // 둘 중의 최대값 구하기
if(num==0)
ans = 1;
System.out.println(ans);
}
}
겉으로 보기엔 쉬운 문제인 줄 알았는데 나름의 알고리즘을 짜서 문제를 해결해야 되서 조금의 시간이 걸렸던 것 같다.