해결된 질문
작성
·
60
0
안녕하세요 ! 수강전 문제를 풀어보았는데
풀었던 방법이 attributeError 런타임에러가 나왔습니다.
하기 방법에 매몰이 되어서 강의에 집중이 안되어서 이렇게 질문하게 되었습니다 ㅠㅠ
이렇게 풀면 메모리나 시간초과가 날까요? 그리고 어디가 틀려서 런타임에러가 나는지 알수있을까요?
import sys
# sys.stdin = open('./input.txt', 'r')
input = sys.stdin.readlines().strip()
from collections import defaultdict
W, H = map(int, input().split())
lit = [int(input()) for _ in range(W)]
# print(lit)
# dict_ = defaultdict()
ans = defaultdict()
points = []
for y, v in enumerate(lit):
if y % 2 == 0:
for x in range(H-v, H):
points.append((x, y))
else:
for x in range(v):
points.append((x, y))
for x, z in points:
if x in ans.keys():
ans[x] += 1
else:
ans[x] = 1
# print(ans)
low_cnt = sorted(ans.values())[0]
cnt = 0
for k, a in ans.items():
if a == low_cnt:
cnt += 1
print(f'{low_cnt} {cnt}')
답변 1
1
안녕하세요, tocc22님!
AttributeError 런타임에러가 나는 이유
input은 함수이므로, 재설정할 때 input = lambda: sys.stdin.readline().rstrip()
와 같이 작성해주셔야 합니다. 이를 바꾸면 런타임 에러는 해결이 될 것입니다.
이렇게 풀면 메모리나 시간초과가 날까요?
코드를 자세히 살펴 보았는데요, 해당 코드는 정확도 측면에서는 맞는 풀이라고 생각이 듭니다. 하지만, 효율성이나 메모리 측면에서는 좀 문제가 있어 보입니다. 이에 대해 제가 바로 설명을 해드릴 수도 있으나, 한 번 tocc22님이 풀이 코드에 대해 시간 복잡도와 사용하는 메모리를 계산해 보시는 것을 추천드립니다!
시간 복잡도와 사용하는 메모리 계산을 해서 나온 결과와 과정을 답글로 작성해 주시면, 제가 더 자세하게 답변을 드리겠습니다! 물고기를 잡아주는 것이 아닌 잡는 법을 알려드리는 과정이라고 좋게 생각해주시면 감사하겠습니다 :)