[BOJ] 백준 1475번 : 방 번호 (JAVA)
문제의 링크 : https://www.acmicpc.net/problem/1475
1475번: 방 번호
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.
www.acmicpc.net
문제
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
풀이
문제의 조건을 그대로 구현하는 문제였습니다. 주어진 방 번호를 한 자리씩 보면서 해당하는 숫자에 해당하는 플라스틱 숫자를 줄이고, 부족할 경우 새로 구입하는 것이 전부입니다.
다만, 6 또는 9는 하나로 처리하는 것이 수훨하기때문에 0~8까지 총 9가지 종류의 플라스틱 숫자를 담은 배열을 선언한 후, 플라스틱 숫자가 필요할 때마다 이를 새로 구입하면 됩니다. 그리고 구입할 때마다, 배열의 인덱스 6을 제외한 나머지 요소는 1 증가, 인덱스 6에 해당하는 요소는 2를 증가해 줍니다.
또한, 주어진 방 번호 N을 한 자리씩 끊어서 보아야하기때문에 N이 0이 아닐 때까지 10을 나누면서 반복문을 돌렸습니다. 그리고 그 과정에서 위 로직을 적용한 것이 바로 아래 코드입니다.
소스 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int[] plastic = new int[9];
buySet(plastic);
int cnt = 1;
// 일의 자리부터 N자리까지 차례로 탐색.
while (N != 0) {
int temp = N % 10;
if (temp == 9) { // 9는 6으로 취급.
temp = 6;
}
if (plastic[temp] == 0) { // 현재 가지고 있는 플라스틱 숫자의 개수가 0이라면 새로 구입.
buySet(plastic);
plastic[temp]--;
cnt++;
} else { // 아니라면, 해당 플라스틱 숫자의 개수 감소.
plastic[temp]--;
}
N /= 10;
}
}
// 새로운 플라스틱 숫자 세트 구입.
public static void buySet(int[] plastic) {
for (int i = 0; i < 9; i++) {
if (i == 6) { // 9는 6과 같은 취급.
plastic[i] += 2;
} else {
plastic[i] += 1;
}
}
}
}
|
지적 혹은 조언 환영합니다! 언제든지 댓글로 남겨주세요.
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 16953번 : A -> B (JAVA) (0) | 2020.05.10 |
---|---|
[BOJ] 백준 10799번 : 쇠막대기 (JAVA) (0) | 2020.05.07 |
[BOJ] 백준 2437번 : 저울 (JAVA) (1) | 2020.05.05 |
[BOJ] 백준 1476번 : 날짜 계산 (JAVA) (1) | 2020.05.04 |
[BOJ] 백준 2869번 : 달팽이는 올라가고 싶다 (JAVA) (1) | 2020.05.04 |
댓글