입력받은 수를 한 문자씩 나누어 숫자와 상응하는 인덱스 번호의 위치의 값을 1씩 증가시킨다.
해당 숫자가 몇 개 나왔는지 누적시킨다.
6과 9는 하나의 숫자로 취급하면 간단하다.
0~8까지 저장할 수 있는 정수형 배열을 만든다. (9는 6에 함께 저장할 것이기 때문에 제외시킴)
배열 초기 모든 저장된 값은 0으로 초기화되어 있으므로
숫자 1이면 인덱스 1의 저장값을 1로 증가, 숫자 2이면 인덱스 2 저장값을 1로 증가시킨다.
배열 크기만큼 반복문을 돌려 누적값을 카운트한다. 누적된 값을 1씩 빼주면서 (6은 9와 함께 저장되기 때문에 2씩 빼줌) 배열에 저장된 모든 값이 0이하가 될 때까지 반복한다.
즉, 반복문 한 번이 플라스틱 한 세트가 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int arr[] = new int[10];
int sub[] = {1,1,1,1,1,1,2,1,1};
int cnt=0, num=0;
String str[] = br.readLine().split("");
for(int i=0; i<str.length; i++) {
int index = Integer.parseInt(str[i]);
if(index==9) index = 6;
arr[index]++;
}
while(true) {
cnt=0;
for(int i=0; i<9; i++) {
if(arr[i]>0)
arr[i] -= sub[i];
else
cnt++;
}
if(cnt>=9) break;
num++;
}
System.out.println(num);
}
}
[출처]
https://www.acmicpc.net/problem/1475
'CODING > BAEKJOON' 카테고리의 다른 글
[BAEKJOON] 1051번 숫자 정사각형 (0) | 2022.02.08 |
---|---|
[BAEKJOON] 10610번 30 (0) | 2022.02.07 |
[BAEKJOON] 1436번 영화감독 숌 (0) | 2022.02.05 |
[BAEKJOON] 7568번 덩치 (0) | 2022.02.03 |
[BAEKJOON] 2609번 최대공약수와 최소공배수 (0) | 2022.02.02 |
댓글