문제
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
입력
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 필요한 세트의 개수를 출력한다.
예제 입력 1 복사
9999
예제 출력 1 복사
2
예제 입력 2 복사
122
예제 출력 2 복사
2
예제 입력 3 복사
12635
예제 출력 3 복사
1
예제 입력 4 복사
888888
예제 출력 4 복사
6
풀이.. 랄 것도 없는 if else 노가다로 풀었다
6이랑 9가 서로 뒤집어서 쓸 수 있다는 것만 유의해서 조건문을 작성했다
import java.util.*;
import java.io.*;
class Main
{
public static void main (String[] args) throws IOException {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
int[] arr = new int[s.length()];
for (int i = 0; i < s.length(); i++) arr[i] = s.charAt(i) - '0';
int res = 0, tmp = 0;
int[] count = new int[10];
for (int i = 0; i < s.length(); i++){
tmp = arr[i];
//원소가 없을때
if (count[tmp] == 0){
if (tmp == 6 || tmp == 9){
if (count[6] == 0 && count[9] == 0){
for (int j = 0; j < 10; j++) count[j]++;
count[tmp]--;
res++;
}
else if (count[6] > 0) count[6]--;
else if (count[9] > 0) count[9]--;
}
else {
for (int j = 0; j < 10; j++) count[j]++;
count[tmp]--;
res++;
}
}
// 원소가 잇으면 갯수를 하나 빼주기
else count[tmp]--;
}
System.out.println(res);
}
}
'자바 알고리즘 > 백준' 카테고리의 다른 글
백준 7795 : 먹을 것인가 먹힐 것인가 (이분탐색) (0) | 2024.05.20 |
---|---|
백준 2503 : 숫자야구 (0) | 2024.05.20 |
백준 1406 : 에디터 (LinkedList, List Iterator) (0) | 2024.05.19 |
백준 1158 : 요세푸스 문제 (0) | 2024.05.07 |
백준 16472 : 고냥이 (1) | 2024.05.06 |