[Java] 백준 1475번
백준 1475번
방 번호
문제
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
입력
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 필요한 세트의 개수를 출력한다.
예제
코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String N = br.readLine();
int arr[] = new int[10];
for(char c : N.toCharArray()) {
int num = c - '0';
if(num == 9)
num = 6;
arr[num]++;
}
arr[6] = (arr[6] / 2) + (arr[6] % 2);
Arrays.sort(arr);
System.out.println(arr[9]);
}
}
풀이
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
첫째 줄에 필요한 세트의 개수를 출력한다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String N = br.readLine();
int arr[] = new int[10];
for(char c : N.toCharArray()) {
int num = c - '0';
if(num == 9)
num = 6;
arr[num]++;
}
arr[6] = (arr[6] / 2) + (arr[6] % 2);
Arrays.sort(arr);
System.out.println(arr[9]);
}
}
1 부터 9까지를 배열의 index로 사용하여 각 index에 해당하는 count를 증가시키는 방식이다.
6과 9는 뒤집어서 반복 사용 가능하므로, 우선 index가 9인 arr는 없애고 (6으로 병합), index가 6인 arr의 count 값을 반으로 나누면 된다.
arr을 정렬 한 후, 가장 큰 count값을 출력한다
Author And Source
이 문제에 관하여([Java] 백준 1475번), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yun12343/Java-백준-1475번저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)