https://www.acmicpc.net/problem/1475
bucket을 활용하면서 약간의 융용력이 필요한 문제였다.
일단, 방 번호를 list에 넣은 뒤, 각각 방 번호를 bucket에 넣었다.
그러면 6과 9 빼고 다른 번호들은 필요한 플라스틱 숫자를 반영한다.
bucket = [0]*10
arr = list(map(int, input()))
for i in range(len(arr)):
bucket[arr[i]] += 1
6과 9는 서로 뒤집어서 사용할 수 있기 때문에, 6과 9의 개수 차이가 아무리 많이 나도
결국 필요한 숫자 세트의 수는 (6의개수+9의개수)/2이다.
위 식이 홀수일때는 한 세트가 더 필요하다는 의미이니까 해당 계산을 해준다.
six_and_nine = 0
if (bucket[6]+bucket[9])%2 == 0:
six_and_nine = (bucket[6]+bucket[9])/2
else:
six_and_nine = ((bucket[6]+bucket[9])//2)+1
결론적으로 필요한 숫자 세트의 수는 bucket에서의 최댓값과 six_and_nine이라는 변수를 비교했을때,
더 큰 값이 된다.
MAX = 0
for i in range(10):
if i==6 or i==9:
continue
if bucket[i] > MAX:
MAX = bucket[i]
print(int(max(MAX, six_and_nine)))
전체 풀이)
bucket = [0]*10
arr = list(map(int, input()))
for i in range(len(arr)):
bucket[arr[i]] += 1
six_and_nine = 0
if (bucket[6]+bucket[9])%2 == 0:
six_and_nine = (bucket[6]+bucket[9])/2
else:
six_and_nine = ((bucket[6]+bucket[9])//2)+1
MAX = 0
for i in range(10):
if i==6 or i==9:
continue
if bucket[i] > MAX:
MAX = bucket[i]
print(int(max(MAX, six_and_nine)))
'파이썬 알고리즘' 카테고리의 다른 글
[파이썬] SWEA 4408 자기 방으로 돌아가기 (0) | 2022.10.31 |
---|---|
[파이썬] SWEA 11671 기지국 (0) | 2022.10.31 |
[파이썬] 백준 6603 로또 (0) | 2022.10.31 |
[파이썬] SWEA 11315 오목판정 (0) | 2022.10.25 |
[파이썬] 백준 7113 Rectangle (while문) (0) | 2022.10.25 |