백준 10610번 30의 배수를 찾는 문제(그리디)에서, pycharm과 달리 자꾸만 런타임에러가 났다. pypy, python도 바꾸고, 코드도 바꿔서 돌렸으나 계속 런타임 에러가 났다.
import sys
input = sys.stdin.readline
을 제거했더니, 정답처리가 되었다.
다른 문제의 경우 input 입력값을 바로 int나 str으로 변환해서 받아서 sys.stdin.readline에서 삽입되는 개행문자로 인한 오류가 생길 일이 없어서 문제가 안 생겼었는데, 이 문제에서는 input 입력값을 그대로 사용하기 때문에 문제가 생겼다. (파이참 터미널에서는 개행문자가 확인되지 않았다.)
따라서, sys.stdin.readline 을 사용하고 싶다면, input().rstrip() 으로 개행문자를 삭제하거나, input에 readline을 할당하지 않고 원래의 내장 그대로 이용하면 된다.
답코드 1.
import sys
input = sys.stdin.readline
l = input().rstrip()
l = sorted(l, reverse = True)
tot = sum([int(i) for i in l])
if tot % 3 != 0 or '0' not in l:
print(-1)
else:
print(''.join(l))
답코드 2.
l = input()
l = sorted(l, reverse = True)
tot = sum([int(i) for i in l])
if tot % 3 != 0 or '0' not in l:
print(-1)
else:
print(''.join(l))
+ 이 문제에서 특이한 점은 입력된 값 자체를 바로 list로 사용하는데,
별도의 list 선언없이 sorted로 바로 list로 변환되는 게 흥미로웠다.
'⚡️algorithm' 카테고리의 다른 글
[그래프, DFS] 백준 9466. 팀정하기 (0) | 2022.04.14 |
---|---|
[그리디] 큰 수 만들기 (feat. stack, list[:-m]) (0) | 2022.04.12 |
readline 과 readlines 의 차이, 다중행 입력 (+ 외부파일 입출력 방법) (0) | 2022.04.08 |
그리디 알고리즘(Greedy Algorithm) (0) | 2022.04.06 |
이분탐색과 업앤다운 게임 (0) | 2022.03.13 |