728x90
출처: www.acmicpc.net/problem/1475
방 번호 분류
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
2 초 | 128 MB | 31131 | 11661 | 10206 | 38.957% |
문제
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
입력
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.
출력
첫째 줄에 필요한 세트의 개수를 출력한다.
예제 입력 1
9999
예제 출력 1
2
이 문제에서 가장 주의해야할 부분은 '6'과 '9'의 계산이다. 위의 예제를 보았을 때, 9999이면 한 세트에 0부터 9까지 있는데, 6도 9로 사용이 가능하기 때문에 총 2세트가 필요한 것이다. 이처럼 방 번호에서 6이나 9가 나왔을 경우에는, set[5]는 숫자 6에 대한 것인데 1을 채우지 않고 0.5로 채운다. 나중에 또 다르게 6과 9로 쓰일 수 있기 때문이다.
그리고 6과 9가 아닐경우에는 그냥 숫자에 +1을 해주면 된다. 최종적으로 set[i] 숫자 중 가장 큰 수를 갖고 있는 숫자를 출력하기 위해 math의 ceil을 이용해주었다. 그리고 max(set)을 해주면 된다.
6과 9에서 헷갈리는 부분을 빠르게 캐치한다면 쉽게 풀리지만, 방향을 잘 못 잡으면 오래 걸릴 것 같다.
1 2 3 4 5 6 7 8 9 10 11 12 | import math roomNum = list(map(int, str(input()))) set= [0] * 9 for i in roomNum: if i == 6 or i == 9: set[5] += 0.5 else: set[i] += 1 print(math.ceil(max(set))) | cs |
728x90
'Baekjoon Online' 카테고리의 다른 글
[python] 백준 1110번_더하기 사이클 (0) | 2021.01.17 |
---|---|
[python] 백준 3040번_백설 공주와 일곱 난쟁이 (0) | 2021.01.16 |
[python] 백준 2525번_오븐 시계 (0) | 2021.01.14 |
[python] 백준 2941번_크로아티아 알파벳 (0) | 2021.01.13 |
[C++] 백준 2839번_설탕 배달 (0) | 2021.01.12 |