인프런 커뮤니티 질문&답변

PrivilegeEscalate님의 프로필 이미지
PrivilegeEscalate

작성한 질문수

입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]

[문제 1번] 사탕 종류

cnt = 1 과 nums.sort() 의 순서가 바뀌어야하지 않나요?

작성

·

159

·

수정됨

0

안녕하세요 강사님. 덕분에 조금씩 강해지는걸 느낍니다. 다 강사님 덕분입니다. 다름이 아니라 문제 정답코드에서 cnt = 1 과 nums.sort() 라인이 바뀌어야 하지않나 의문을 제시해봅니다.

 

정렬을 해주는 이유가 이미 앞에서 중복검사를 한 값을 뒤에서 또 한번 검사하게 하지 않게하기 위함인데, cnt 를 먼저 1 로 초기화준 다음에 sort() 를 진행하게 되면 nums[0] 이었던 값이 나중에 또 중복검사되는 변수가 생기지 않나요?

 

해당 문제처럼 개수를 카운트하는 문제는 상관없지만, 만약에 uniq 한 값을 배열을 리턴받아 사용하는 문제가 된다면 문제가 있을 것 같습니다.

 

혹시 제가 놓치고있는 부분이나 잘못생각하고있는 것일까요?

답변부탁드리겠습니다!!

 

uniq 한 배열을 리턴받아 사용하는 경우로 가정하고 테스트를해보면 아래와 같이 나옵니다.

 

  1. nums.sort() 가 나중에 올 경우

 

  1. nums.sort() 가 먼저 올 경우

 

답변 2

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

네. 맞습니다.

유니크한 값을 배열에 담아 리턴할때는 먼저 소트를 하고 첫번째 원소를 배열에 담아야 맞겠죠.

0

안녕하세요, 인프런 AI 인턴입니다. PrivilegeEscalate님의 질문에 대해 도움을 드리겠습니다.

cnt = 1로 초기화하고 nums.sort()를 진행하는 것에 대한 순서는 문제의 요구사항에 따라 다를 수 있습니다. nums 리스트가 정렬되기 전에 중복을 검사하는 로직이라면, 정렬 후에는 이미 검증된 값을 다시 검사할 가능성이 생기기 때문에 오류가 발생할 수 있습니다.

PrivilegeEscalate님이 고민하신 상황에서, nums.sort()를 먼저 수행하고 난 후에 중복 검사를 진행하는 것이 더 올바른 접근일 수 있습니다. 정렬을 통해 동일한 값들이 연속해서 나열되므로, 이웃하는 값들만을 비교함으로써 중복 값을 효율적으로 걸러낼 수 있으니까요.

올려주신 두 번째 이미지의 코드 결과는 nums.sort()가 먼저 적용됐을 때, 중복 없이 유니크한 값을 순서대로 정렬하여 출력하는 것으로 보여 효율적인 결과로 평가될 수 있어 보입니다.

정렬이 중복 제거 로직에 영향을 줄 수 있으므로, 정렬과 중복 검사의 순서를 잘 고려하여 코드를 작성하시는 것이 좋습니다. 만약 강의 내용에서 코드의 순서가 영향을 줄 가능성이 있다면 강사님께 직접 문의하여 확인해 보시는 것도 좋을 것 같습니다.

더 도움이 필요하시면 인프런질문답변 섹션을 이용해보시기 바랍니다.

감사합니다!

PrivilegeEscalate님의 프로필 이미지
PrivilegeEscalate

작성한 질문수

질문하기