본문 바로가기
Algorithms/BOJ

[Java] 1475. 방번호

by kyungsubbb 2021. 1. 27.

www.acmicpc.net/problem/1475

 

1475번: 방 번호

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

www.acmicpc.net

0~9까지의 숫자로 이루어진 숫자 세트를 이용하여 방번호를 표현하고자 한다.
주어진 입력은 최소 몇 개의 세트를 이용해야 하는지 출력하면 된다.
단, 문제의 핵심 포인트는 6과 9를 서로 뒤집어서 사용할 수 있다고 한다.



//1
배열을 0~9까지가 아닌 0~8까지만 생성하였다.
이유는 6과 9를 함께 count하면서 나중의 계산을 편하게 하기 위함이다.

//2
idx 변수로 최댓값의 인덱스를, max변수로 배열의 최댓값을 저장한다.

//3
최댓값의 인덱스가 6일 경우에, 한 세트에 6과 9가 각각 1개, 총 2개가 있으므로 그의 절반의 수만큼의 세트가 필요하다.
만약 홀수 일 경우에는 6또는 9가 한 개 더 필요하기 때문에 1세트를 추가해준다.

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String N = sc.next();
        
        //1
		int[] arr = new int[9];
		for (int i = 0; i < N.length(); i++) {
			if(N.charAt(i) == '9')
				arr[6]++;
			else
				arr[N.charAt(i)-48]++;
		}
        
        //2
		int idx = 0;
		int max = Integer.MIN_VALUE;
		for (int i = 0; i < arr.length; i++) {
			if(max < arr[i]) {
				max = arr[i];
				idx = i;
			}
		}
		
        //3
		if(idx == 6) {
			if(max % 2 == 0)
				System.out.println(max/2);
			else
				System.out.println(max/2 +1);
		}
		else
			System.out.println(max);
		sc.close();
	}
}

 

 

 

'Algorithms > BOJ' 카테고리의 다른 글

[Python, Java] 15649. N과 M(1)  (0) 2021.02.06
[Java] 16236. 아기 상어  (0) 2021.02.03
[Python] 2004. 조합 0의 개수  (0) 2021.02.02
[Java] 13458. 시험 감독  (0) 2021.01.29
[Java] 2217. 로프  (0) 2021.01.28