빈 리스트 생성의 경우
리스트에 어떠한 값을 추가할 예정이라고 하더라도, 프로그램이 정상적으로 작동하기 위해서는 해당 리스트를 미리 생성해 초기화해 놓아야 한다. 파이썬에서 빈 리스트는 기본적으로 "[]"을 입력해 생성한다. 아래 두 코드들은 실제로 내가 백준 문제를 풀며 리스트를 초기화한 사례이다.
# https://www.acmicpc.net/problem/10871
import sys
N, X = map(int, sys.stdin.readline().split())
A = list(map(int, sys.stdin.readline().split()))
less_than = []
for i in A:
if i < X:
less_than.append(i)
# To convert each element to a string, you should use the map function
result = map(str, less_than)
print(' '.join(result))
# https://www.acmicpc.net/problem/2562
import sys
inputs = []
for i in range(9):
num = int(sys.stdin.readline())
inputs.append(num)
max_num = max(inputs)
print(max_num)
print(inputs.index(max_num) + 1)
"{0}"은 집합, "{}"은 딕셔너리
백준 3052번 문제를 풀며 실제로 집합 개념을 사용해야 할 때가 왔다. 나는 별생각 없이 집합은 "{}" 형태로 나타나니까 "{}"을 입력해 집합을 초기화해주려고 했다. 그러나 for문에서 집합에 요소를 추가하는 add 함수가 정상적으로 작동하지 않았다. VS Code에서 지원하는 문법 강조 기능을 통해 무언가 잘못되었다는 건 직관적으로 알 수 있었다.
# https://www.acmicpc.net/problem/3052
import sys
rest = {}
for i in range(10):
n = int(sys.stdin.readline())
rest.add(n % 42)
print(len(rest))
오류의 원인은 위에 보이는 "rest = {}"가 집합이 아닌 빈 딕셔너리를 생성하는 코드이기 때문이다. 딕셔너리는 add 메소드를 사용할 수 없다. 딕셔너리와 집합 모두 "{}"를 사용하지만, 딕셔너리는 "{key1: value1, key2: value2}" 형식으로, 집합은 "{value1, value2}" 형식으로 이루어져 있다. 핵심은 "{}" 안이 빈 경우 기본적으로 딕셔너리 취급한다는 것이고, 만약 빈 집합을 생성하고 싶다면 "set()"을 사용해야 한다는 것이다.
# https://www.acmicpc.net/problem/3052
import sys
rest = set()
for i in range(10):
n = int(sys.stdin.readline())
rest.add(n % 42)
print(len(rest))
'Insights > For KR' 카테고리의 다른 글
백준 11718번: 입력이 없는데 EOFError가 발생하지 않는다고? (0) | 2024.11.23 |
---|---|
백준 2675번: 디버거로 분석하는 이스케이프 문자 처리 (0) | 2024.11.16 |
백준 10809번: find 메서드는 인덱스만 반환하는가? (0) | 2024.11.09 |
VS Code로 GitHub에 커밋하기: user.name, user.email (0) | 2024.10.26 |