donny0417   1년 전

아래와 같은 코드로 제출하여 해결하긴 하였는데

a= int(sys.stdin.readline())

이 부분을

a=map(int,sys.stdin.readline())

으로 했을 때는 오류가 나서 왜 그런지 궁금합니다

ufshg   1년 전

a = map(int, sys.stdin.readline()) 을 실행하고 a를 print해보면 아마 map 객체로 찍힐 것 같습니다.

a = list(map(int, sys.stdin.readline())으로 map객체를 list형태로 변환하면 원하시는 대로 나올것같습니다.

추가로 팁을 하나 드리자면, 백준의 입력스트림과 출력스트림이 다르기 때문에, 굳이 b 배열에 모두 저장해놨다가 한번에 합들을 출력하지 않아도 됩니다.

받는 즉시 각 합들을 출력해나가도 돼요.

아래에 코드를 첨부해드리겠습니다.

donny0417   1년 전

입력스트림과 출력스트림에 대해 잘은 모르지만...

제가 이해한 바에 따르면

idle에서는 엔터 누를 때마다 결과값이 나와서 한 번에 출력되도록 한 것인데

백준에서는 그럴 필요가 없다는 말씀이신거죠??

자세한 답변 감사드립니다!!

zenith82114   1년 전

a = list(map(int, sys.stdin.readline())은 안 됩니다.

첫 줄의 수가 123이라고 하면

sys.stdin.readline()에는 '123\n'이라는 문자열이 들어오고

map 함수는 이 4개의 문자마다 각각 int를 적용하려고 할 겁니다.

실제로 돌려 보면 개행문자 '\n'에 int를 적용할 수 없다고 ValueError가 날 겁니다.

ufshg   1년 전

@zenith82114

아하,,, 그러네요. 제가 문제를 너무 날림으로 읽었습니다.

저도 배워갑니다 감사해요!

댓글을 작성하려면 로그인해야 합니다.