본문 바로가기
공부 정리/백준

[백준] 자바 1475 방 번호

by 경적필패. 2021. 8. 30.
반응형

문제

다솜이는 은진이의 옆집에 새로 이사 왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)

입력

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

출력

첫째 줄에 필요한 세트의 개수를 출력한다.


테스트 케이스

 

입력 1

10101

출력 1

3

 

입력 2

6666

출력 2

2

 

입력 3

0123456789

출력 3

1


접근

1.방번호를 입력받는다.

2. 방 번호를 만들기 위한 숫자 세트가 몇 개인지 출력한다.

 

0~9까지가 하나의 숫자세트입니다. 

10칸짜리 배열을 만들어서 숫자가 들어올 때마다 해당 배열을 +1 해줘서

마지막에 배열들 중 최댓값을 출력합니다.

 

주의해야 할 것은 6이 2번 쓰이더라도 숫자 세트 2개를 사용하는 것은 아닙니다.

6과 9는 같은 모양이기 때문입니다.


코드

import java.awt.desktop.SystemEventListener;
import java.io.*;
import java.math.*;
import java.util.*;

public class Main {

	/*
 	 1475 problem
	*/
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int max = 0;
		String input = br.readLine();
		int arr[] = new int[10];
		for(int i=0; i<input.length(); i++) {
			arr[input.charAt(i)-'0']++;
		}
		int sum = arr[6]+arr[9];
		if(sum%2==0) {
			sum /= 2;
		}
		else {
			sum /= 2;
			sum++;
		}
		arr[6] = sum;
		arr[9] = sum;
		for(int i=0; i<input.length(); i++) {
			max = Math.max(max, arr[input.charAt(i)-'0']);
		}
		bw.write(String.valueOf(max));
		bw.flush();
		br.close();
		bw.close();
	}
}

주의

6과 9

 

반응형

댓글