방 번호

18 June 2019

문제 : https://www.acmicpc.net/problem/1475

이번은 주어진 단어를 만들기 위한 규칙을 찾는 문제를 풀어보도록 하겠습니다.

import java.util.Scanner;

public class Main {

    private static double[] intArr = new double[10];

    public static void main(String args[]) {

        for (int i = 0; i < intArr.length; i++) {
            intArr[i] = 0.0;
        }

        Scanner sc = new Scanner(System.in);

        String value = sc.next();

        for (int i = 0; i < value.length(); i++) {
            if (value.charAt(i) == '9' || value.charAt(i) == '6') {
                intArr[6] += 0.5;
            } else {
                intArr[Integer.parseInt(String.valueOf(value.charAt(i)))]++;
            }
        }

        int max = 0;

        for (int i = 0; i < intArr.length; i++) {
            if (Math.round(intArr[i]) > max) {
                max = (int) Math.round(intArr[i]);
            }
        }
        System.out.println(max);
    }
}
하나의 세트가 0~9까지 이루어져 있고, 9나 6은 서로 바꿔쓸 수 있기 때문에 하나의 글자가 두 개가 있다고 생각하여 풀면 됩니다.
받은 숫자에 대해 각 array의 값을 계속 더해주는데, 9나 6은 서로 바꿔쓸 수 있기 때문에 0.5씩만 더해줍니다.
모든 글자에 대해서 처리가 끝난 이후, 9나 6에 대해서는 0.5가 있을 수 있기 때문에 반올림을 해준 후 최대값을 구해 return 해줍니다.