카테고리 없음

7/10 코테 일지 (exec() 함수)

코테챌린져 2024. 7. 10. 18:21

exec() 함수

#1991 트리 순회

트리 순회 문제에서 input이 알파벳으로 들어오면 해당 알파벳을 이름으로 가지는 새로운 TreeNode()를 생성하여야 했다. 어떻게 하면 가능할까 하였는데 exec() 함수를 사용하면 가능하였다. 

import sys
n = int(sys.stdin.readline().rstrip())
root_set = set()

for _ in range(n):
  input = sys.stdin.readline().rstrip().split(' ')
  for node in input :
    if node not in root_set and node != '.': 
      root_set.add(node)
      exec(f"{node} = TreeNode('{node}')")
  if input[1] != '.' :
    exec(f"{input[0]}.left = {input[1]}")
  if input[2] != '.' :
    exec(f"{input[0]}.right = {input[2]}")

 

 

그 외

#14425 문자열 집합

set를 잘 활용하였다. 

import sys 
N, M = map(int,sys.stdin.readline().rstrip().split(' '))

n_set = set()
for _ in range(N):
  n_set.add(sys.stdin.readline().rstrip())

cnt = 0
for _ in range(M):
  if sys.stdin.readline().rstrip() in n_set:
    cnt += 1
print(cnt)

 

#1764 듣보

set를 잘 활용하였다. 

import sys 
n, m = map(int,sys.stdin.readline().rstrip().split(' '))
n_set = set()
for _ in range(n):
  n_set.add(sys.stdin.readline().rstrip())
ans = []
for _ in range(m):
  temp = sys.stdin.readline().rstrip()
  if temp in n_set:
    ans.append(temp)
print(len(ans))
for i in sorted(ans) :
  print(i)