[알고리즘]/백준

자바 - 구현 - 백준 1476 방 번호

broship 2021. 3. 3. 12:02

문제


 

 

 

 

 

문제해결


- boolean[10] 을 만든 후 숫자가 없으면 true로 바꾸고 있으면 세트 수 증가시키고 불린 배열 초기화를 하는 방법으로 6이 들어오면 9를 체크하고, 9가 들어오면 6을 체크하는 방식으로 해서 6,9 처리는 되었으나 내 방식대로 하면 111999 같은 경우 3개만 필요한데 4개가 나온다...

- 틀려서 구글링..

import java.util.Scanner;

public class B1476_2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		//9와 6을 하나로 봄(나중에 /2하면 됨)
		input = input.replace('9', '6');
		//0~8의 int 배열 만들기
		int[] check = new int[9];
		//각 숫자별로 필요한 개수
		for(int i=0;i<input.length();i++) {
			int idx = input.charAt(i)-'0';
			check[idx]++;
		}
		//6은 나누기2를 한후 반올림
		if(check[6]!=0)
			check[6] = (int)Math.round(check[6]/2.0);
		//가장 많이 중복되는 숫자
		int max = 0;
		//check배열중 가장 큰수만큼 세트가 필요
		for(int i=0;i<check.length;i++)
			if(check[i]>max) max = check[i];
		System.out.println(max);
	}
}

1. 일단 9는 다 6으로 처리한다

2. 0~8까지 각 숫자가 몇개씩 필요한지 파악한다(int[] check)

3. 6은 나누기 2를 한 후 반올림을 한다

4. 0~8 까지의 숫자 중 어느 숫자가 가장 많이 필요한지 체크한다