안녕하세요? 해당 코드를 디버깅해보았습니다. 반례입니다:
입력 : z 정답 : Z 출력 : ?
입력받은 문자열이 단 한 글자일 경우 출력이 ?로 나타나는 반례가 있습니다. 그 이유는 3번째 줄에서 입력값을 제대로 다듬어주지 않았기 때문입니다.
입력값이 z로 들어왔을 경우 이 결과를 의도하셨을 것입니다:
(val > max) max는 매우 작은 값, Z의 val값은 1이므로 조건 만족, max 값에 1을 대입하고 answer는 'Z' 가 된다. 더 이상 처리할 문자열이 없으므로 for문을 빠져나와 'Z'가 출력된다.
하지만 실제 결과는 이렇습니다:
(val > max) max는 매우 작은 값, Z의 val값은 1이므로 조건 만족, max 값에 1을 대입하고 answer는 'Z' 가 된다. (val === max) max의 값은 1, \n의 val값 또한 1이므로 조건 만족, answer는 '?' 가 된다.
결과적으로 입력된 값의 문자열이 제대로 다듬어지지 않아 입력값이 'Z' 여야 하는데 'Z\n' 이 되어 불필요한 개행 문자가 포함되었습니다. 그 결과 \n도 문자열 취급이 되어 의도와 다른 결과가 나오게 되었네요.
Node.js로 문제를 푸실 경우 써서는 안 될 극소수의 몇몇 상황을 제외하고는, 데이터를 가져올 때 trim() 을 꼭 사용해 주세요. trim()은 문자열의 앞뒤에 있는 불필요한 공백, 개행 문자 등을 제거해 의도하지 않은 버그가 발생하는 것을 막아 줍니다.
문제가 해결되었기를 바랍니다!
skychl9358 2년 전
테케는 물론 여러 입력을 넣어봐도 잘만 출력되는데 틀렸다고 뜨네요
반례가 있을까요?
어떻게 고치면 완벽한 코드가 될 지 조언 부탁드립니다ㅠㅠ