⚡️algorithm

[boj 10610] sys.stdin.readline , input 에러

남남이루 2022. 4. 7. 16:22

백준 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로 변환되는 게 흥미로웠다.

 

* 참고  https://dallae7.tistory.com/38