so4644009   5년 전

처음 제출해서 맞긴 했는데 더 효율적인 코드를 생각하려고 제가 짰던 코드를 들여다보고 있는데 파란색 밑줄 친 부분이 char형에서 int형으로 변환하는 게 빠져있는 것 같아서(그래서 메모리가 다른 정답자 분들에 비해 많이 나온 것 같아서)  파란색 부분처럼 (p[j]-'0')으로 고치고 제출했는데 틀렸다고 나오네요.. 오히려 틀렸다고 제출한 코드에는 이상이 없어 보이는데 왜 그런지 봐주실 수 있나요?  (배열 p는 char형이고 cnt는 int)

4b4c9531-eb8b-4542-a08f-d4807e61db8b

djm03178   5년 전

우선 한 가지를 확실히 하고 갑시다. char형과 int형 모두 평범한 정수형입니다.

char형보다 int형이 범위가 넓으므로 char형이 표현할 수 있는 모든 수를 int형이 표현할 수 있습니다. 예를 들어, char형 변수 a의 값을 int형 변수 b에 대입하려면 b = a; 라고 하면 됩니다.

마찬가지로, char형인 p[j]를 int형으로 변환하려면 그냥 (int)p[j]라고 하면 됩니다. 여기서 '0'이라는 정수값을 뺄 이유가 전혀 없죠. 만약 입력 자체를 문자로 받으면 그 값은 문자표에서 각 숫자가 나타내는 아스키 코드 값이기 때문에 그 때 '0'을 빼는 것이고, 여기서는 정수형으로 입력을 받았기 때문에 그 값 자체입니다. 각 자릿수를 구하는 연산도 전부 평범한 정수형에 대해서 하고 있지 아스키 코드는 전혀 관여하고 있지 않습니다.

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