jsyoon0926   2년 전

어느 부분이 틀렸는 지 모르겠습니다...

정답코드랑 딱히 다른 부분도 없는 것 같다고 생각되는데요..

wizardrabbit   2년 전

안녕하세요? 예제의 입력을 예로 들어보겠습니다.

5
20 10 35 30 7

를 입력받았을 때,

첫 번째 코드는 10 7(오답), 두 번째 코드는 7 35(올바른 답)을 반환합니다.

두 코드 모두 비교하는 논리는 제대로 구현되었습니다. 그럼에도 두 코드가 다른 결과를 낸 이유는, 바로 입력받은 값들이 문자열과 정수로 달랐기 때문입니다.

첫 번째 코드에서 비교할 값들을 입력받았을 때, 4번째 줄에서 입력받은 값을 배열로 만들기 위해 split()이 사용되었습니다. 여기서 split()을 사용한 이후 만들어지는 배열에 들어가는 값은 문자열 형태입니다.

따라서 의도하신 대로 최댓값과 최솟값을 골라 내려면, 먼저 split()을 통해 문자열이 된 값들을 정수 형태로 변환하는 작업이 필요합니다. (첨부된 코드를 확인해 보세요)

● 첫 번째 코드의 경우 문자열 값을 비교하게 되어 사전 순으로 값이 골라지게 되었고, 그 결과 최솟값이 10, 최댓값은 7이 반환되었습니다. ('10' 의 첫 번째 자릿수는 '1' 로 사전순으로 가장 앞서고, '7' 의 첫 번째 자릿수는 '7'로 사전순으로 가장 나중입니다.)

● 두 번째 코드의 경우 정수 값을 비교하게 되어 의도대로 작은 값과 큰 값이 골라지게 되었고, 그 결과 최솟값이 7, 최댓값은 35가 반환되었습니다.

그래서 두 코드의 결과는 달랐고, 결과적으로 첫 번째 코드가 오답 처리가 된 것입니다.

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