codren   2년 전

VScode 에서는 결과가 잘만 나오는데 왜 컴파일 에러가 나는 건지 잘 모르겠습니다.

혹시 아시는 분 있나요?? 

bamgoesn   2년 전

input()은 받은 입력을 "문자열"로 반환합니다. 하나의 문자열을 a, b, c 세 개의 변수에 집어넣으려고 하다 보니 작동이 제대로 안 되는 것이죠.

아마 질문자님께선 한 자리 숫자 2개만을 입력해보신 것 같은데, 그런 경우에는 문자열의 길이가 3이기에 a, b, c에 숫자, 띄어쓰기, 숫자가 제대로 입력됩니다.

하지만 둘 중 하나가 10 이상이 되면 코드가 질문자님이 의도하신 대로 작동하지 않습니다. 예를 들어 10 4 를 입력한다면 c에는 공백이 들어갈 것이고, 따라서 int(c)에서 ValueError가 발생합니다.

---------------

한 줄에 하나의 정수가 들어올 때에는 a = int(input())

한 줄에 여러 정수가 들어오되, 그 개수가 정해져 있을 때에는 a, b = map(int, input().split())

한 줄에 여러 정수가 들어오되, 그 개수를 모를 때에는 a = list(map(int, input().split())) 으로 받고 a 리스트를 인덱싱하기

int가 int(a)와 같이 사용된다는 점에서 int는 함수라는 점, 그리고 map이 무슨 기능을 하는지 아신다면 위 코드가 어떻게 작동하는지 이해할 수 있습니다. 만약 안 된다면 일단 메모해두고 map을 배우신 다음에 생각해보세요.

이 문제에선 두 번째 케이스에 해당하니 저 코드를 사용하면 됩니다.

bamgoesn   2년 전

+ 10 4를 입력한다고 했을 때 input()이 반환한 문자열의 길이가 3보다 커서 에러가 날 수도 았겠네요. 지금 테스트를 못 해봐서...

어느쪽이든 원하시는 대로 코드가 작동하지는 않습니다.

codren   2년 전

다른 사칙 연산문제에서 a,b,c = input()으로 성공한 경우는 조건이 (0 < A, B < 10) 여서 그렇군요

하지만 저 문제에서는 (테스트)조건이 (1 < A,B < 10000) 이니 답변해주신대로 10 이상의 수가 들어오면 a,b,c = input()으로 입력 받았을 때

3자리가 넘어가서 런타임 에러가 뜨는 것이고요.. 이해했습니다.  답변 정말 감사드립니다 !! 제 시간을 구하셨어요.. :) 

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