문제
https://www.acmicpc.net/problem/1475
사용 언어
Python3
제출 답안
N = list(input()) # 방 번호 9999
num_set = list(range(10))
current_set = []
count = 0
while(len(N)>0): # 4
num = int(N.pop(0)) # 9
if num in current_set: # 있으면
current_set.remove(num) # 숫자 사용
else: # 없으면
if num == 6:
if 9 in current_set:
current_set.remove(9) # 대신 사용
continue
elif num == 9:
if 6 in current_set:
current_set.remove(6) # 대신 사용
continue
count += 1
current_set += num_set # 새로운 숫자 세트 추가해서
current_set.remove(num) # 숫자 사용
print(count)
공부한 내용
pop()
지정한 위치에 값을 취득한 후 삭제하는 함수이다.
l = list(range(10))
print(l) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l.pop(0)) # 0
print(l) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l.pop(3)) # 4
print(l) # [1, 2, 3, 5, 6, 7, 8, 9]
뒤에서부터 인덱스를 지정하고 싶은 경우는 마이너스를 사용한다.
l = [1, 2, 3, 5, 6, 7, 8, 9]
print(l.pop(-2)) # 8
print(l) # [1, 2, 3, 5, 6, 7, 9]
인덱스를 생략한 경우에는 마지막 값을 취득하고 삭제한다.
l = [1, 2, 3, 5, 6, 7, 9]
print(l.pop()) # 9
print(l) # [1, 2, 3, 5, 6, 7]
존재하지 않는 인덱스를 지정한 경우에는 에러가 발생한다.
print(l.pop(100))
IndexError: pop index out of range
출처: https://ponyozzang.tistory.com/587
remove()
설정한 값과 같은 요소를 검색하고 값을 삭제하는 함수이다.
설정한 값이 리스트에 여러개 있는 경우에는 가장 앞에 있는 값 하나만 삭제한다.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']
설정한 값이 존재하지 않는 경우에는 에러가 발생한다.
l.remove('xxx')
ValueError: list.remove(x): x not in list
# 9
print(l) # [1, 2, 3, 5, 6, 7]
다른 사람 답안
n = input()
a = {'0':0, '1':0, '2':0, '3':0, '4':0, '5':0, '6':0, '7':0, '8':0}
for i in range(len(n)):
if n[i] in ['6', '9']:
a['6'] += 1
else:
a[n[i]] += 1
if a['6'] % 2 == 0:
a['6'] = a['6'] // 2
else:
a['6'] = a['6'] // 2 + 1
print(max(a.values()))
출처: https://pacific-ocean.tistory.com/97
딕셔너리를 사용해서 푼 방법인데 전체 숫자 개수중에 가장 많이 사용한 개수가 곧 필요한 숫자 세트라는 생각으로 푸신게 인상깊었다. 나도 저런 아이디어로 간단한 코드를 짤 수 있도록 노력해야겠다..!
그리고 9를 사용하지 않고 6으로 합쳐서 계산한 뒤 그 값이 짝수라면 몫을 그대로 사용하고
그 값이 홀수이면 하나를 더한 값을 넣어준 뒤
전체값 중에서 가장 큰 값을 출력하면 끝! 멋지다
'코딩 테스트 스터디 > 백준' 카테고리의 다른 글
[브론즈 I] 2389번. 설탕 배달 (0) | 2022.02.10 |
---|---|
[브론즈 IV] 10162번. 전자레인지 (0) | 2022.02.10 |
[실버 IV] 2108번. 통계학 (0) | 2022.02.06 |
[브론즈 III] 3009번. 네 번째 점 (0) | 2022.02.04 |
[브론즈 II] 14561번. 회문 (0) | 2022.02.03 |