개발에 AtoZ까지

[JAVA][백준] 1475. 방 번호 본문

코딩테스트 준비/백준

[JAVA][백준] 1475. 방 번호

AtoZ 개발자 2021. 5. 19. 15:02
반응형

문제

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

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

더보기

입력

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

출력

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

예제 입력 1 

9999

예제 출력 1 

2

코드

package BJ;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;

public class Array_1475 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		//0~9까지의 플라스틱 숫자를 담기 위한 배열 준비
		int[] numbers = new int[10];
		
		String[] str = br.readLine().split("");
		
		//입력된 숫자를 split 하고 숫자의 개수 만큼 numbers 배열의 인덱스값을 ++해준다
		//ex) 입력된 값: 9 -> numbers[9] = 1 이 되는것이다.
		// 6과 9는 한 숫자로 생각하고 numbers에 넣어준다.
		Arrays.stream(str).forEach(x->{
			int n = Integer.parseInt(x);
			if(n==9) n=6;
			numbers[n]++;
		});
		
		//6과 9를 6으로 생각하고 count를 했기 때문에 반으로 나눠준다. 0~9는 6과 9이렇게 2가지만 있기때문에 반으로 나눠주는것이다.
		numbers[6] = numbers[6]/2+numbers[6]%2;
		
		bw.append(Arrays.stream(numbers).max().getAsInt()+"\n");
		bw.flush();
	}

}

 

반응형

'코딩테스트 준비 > 백준' 카테고리의 다른 글

[JAVA][백준] 2109. 순회강연  (0) 2021.08.05
[JAVA][백준] 3273. 두 수의 합  (0) 2021.05.20
Comments