말씀하신대로 getChar가 문자형이기 때문에 아스키코드값 '0'을 빼준 듯합니다.
11720번 - 숫자의 합
말씀하신대로 getChar가 문자형이기 때문에 아스키코드값 '0'을 빼준 듯합니다.
문자형 '0' ~ '9'는 아스키 코드표를 보면 80 ~ 89의 값을 의미합니다.
따라서, 만약 문자형 숫자: '1'을 정수형 1로 바꾸기위해선 81 - 80 -> '1' - '0' = 1 이런식으로 써서 연산하곤 합니다.
이를 알파벳에 적용해서 알파벳 값을 배열 인덱스로 사용도 자주 하구요..
이 문제는 입력으로들어오는 수가 크기 때문에
즉, N은 숫자의 갯수를 의미하는데 100까지 들어온다했으니 최대 100자리 까지 들어옵니다.
long범위를 훨씬 뛰어넘겠죠.. (19자리인가? 10^18이니까요.)
어차피 입력으로 들어온 N개의 숫자를 하나씩 더하는 것이니 일부러 문자로 하나하나 받아와서 이를 한자리 정수형으로 바꿔주고 더해서 결과를 내는 코드라고 보시면 될 것같습니다.
제가 getchar 동작방식은 잘 모르는데.. 그렇게 생각하시는게 이해하기 편하시면 그렇게 생각하셔도 될 거 같습니다.
댓글을 작성하려면 로그인해야 합니다.
lkc263 4년 전
저는 처음에 int형으로 하며 scanf입력을 사용하여 나머지를 통하여 구하는 합을 의미하는 줄 알았습니다. 하지만 그러한게 아니라 getchar() 문자 입력을 통해 나오는 결과 였습니다.
for 문안에
getchar이 입력상태 와 (-'0')을 한이유는 문자이기에 사용한 결과일까요??
sum = sum + getchar() - '0'; 이부분 해석 가능하실까요??