[ Baekjoon Online Judge _ 01475 _ 방번호 ]
문제
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최소값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
입력
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 필요한 세트의 개수를 출력한다.
예제 입력
9999
예제 출력
2
풀이
먼저 크기10인 배열을 만들어서
방번호 각 자리의 숫자에 해당하는 인덱스를 1씩 늘려준다.
이렇게 하고 마지막에 가장 원소의 크기가 큰 인덱스가 필요한 세트의 개수가 된다.
이 때, 6과 9는 서로 구분없이 사용할 수 있기 때문에
둘의 값을 더해서 2로 나누어 주면 된다.
그리고 6이나 9가 두개면 한 세트지만 한개만 더 있어도 한세트가 더 필요하기 떄문에
나머지도 더해줘야 한다.
그렇게 하고 마지막에 배열에서 최대값을 찾아주면 된ㄷㅏ.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String N = sc.next(); int count[] = new int[10]; for(int i = 0; i < N.length(); i++) count[N.charAt(i) - '0']++; //6과 9는 혼용할 수 있으므로 총 개수를 더해서 2로 나눈 몫+나머지 만큼의 셋트가 필요하다. count[6] = count[9] = (count[6] + count[9])/2 + (count[6] + count[9])%2; //최대값 int max = count[0]; for(int i = 1; i < 10; i++) if(count[i] > max) max = count[i]; System.out.println(max); } } | cs |
'Algorithm > Java' 카테고리의 다른 글
Baekjoon Online Judge _ 01152 _ 단어의 개수 (0) | 2017.01.11 |
---|---|
Baekjoon Online Judge _ 01916 _ 최소비용 구하기 (2) | 2017.01.10 |
Baekjoon Online Judge _ 01753 _ 최단경로 (0) | 2017.01.02 |
Baekjoon Online Judge _ 01934 _ 최소공배수 (1) | 2016.12.28 |
Baekjoon Online Judge _ 05014 _ 스타트링크 (2) | 2016.12.26 |