코딩테스트/백준

[백준]1475번 방 번호 - Java

GAEBAL 2022. 4. 6. 15:12
728x90

문제

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

 

1475번: 방 번호

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

 

풀이

크기 10인 1차원 배열을 만들어서 반복문을 돌면서 인덱스에 해당하는 번호가 나올 때마다 증가를 시켜줌

반복문이 끝마녀 그 중 최댓값을 출력하면 되는데, 6이나 9인 경우에는

int temp = arr[6] + arr[9];

temp = temp / 2 + temp % 2;

6이랑 9를 뒤집어서 사용할 수 있으므로 이렇게 해줘야 됨

 

그 후에 다시 최댓값을 찾아서 출력하면 끝!

 

아예 처음에 배열을 크기 9로 만들고 입력받을 때 6이랑 9를 같은거라고 인식해서 입력 받아서 풀 수도 있을 것 같음!

 

 

코드

// 1475번 방 번호
// https://www.acmicpc.net/problem/1475

package BAEKJOON;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Num1475_방번호 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str = br.readLine();
        int[] arr = new int[10];

        for (int i = 0; i < str.length(); i++) {
            arr[str.charAt(i) - '0']++;
        }

        int max = Integer.MIN_VALUE;
        int maxIndex = 0;
        for (int i = 0; i < arr.length; i++) {
            if (max < arr[i]) {
                max = arr[i];
                maxIndex = i;
            }
        }

        // 6이나 9가 아니면 그냥 max를 출력하면 됨
        if (maxIndex != 6 && maxIndex != 9) {
            System.out.println(max);
        } else { // 6이나 9면 둘을 합해서 2로 나눠줘야함
            max = Integer.MIN_VALUE;
            int temp = arr[6] + arr[9];

            // 최댓값으로 인식되기 때문에 0으로 만들어줌
            arr[6] = 0;
            arr[9] = 0;

            temp = temp / 2 + temp % 2;

            for (int i = 0; i < arr.length; i++) {
                if (max < arr[i]) {
                    max = arr[i];
                }
            }
            
            max = Math.max(max, temp);
            System.out.println(max);
        }

    }
}
728x90