cnt = 1 과 nums.sort() 의 순서가 바뀌어야하지 않나요?
274
27 asked
안녕하세요 강사님. 덕분에 조금씩 강해지는걸 느낍니다. 다 강사님 덕분입니다. 다름이 아니라 문제 정답코드에서 cnt = 1 과 nums.sort() 라인이 바뀌어야 하지않나 의문을 제시해봅니다.
정렬을 해주는 이유가 이미 앞에서 중복검사를 한 값을 뒤에서 또 한번 검사하게 하지 않게하기 위함인데, cnt 를 먼저 1 로 초기화준 다음에 sort() 를 진행하게 되면 nums[0] 이었던 값이 나중에 또 중복검사되는 변수가 생기지 않나요?
해당 문제처럼 개수를 카운트하는 문제는 상관없지만, 만약에 uniq 한 값을 배열을 리턴받아 사용하는 문제가 된다면 문제가 있을 것 같습니다.
혹시 제가 놓치고있는 부분이나 잘못생각하고있는 것일까요?
답변부탁드리겠습니다!!
uniq 한 배열을 리턴받아 사용하는 경우로 가정하고 테스트를해보면 아래와 같이 나옵니다.
nums.sort() 가 나중에 올 경우


nums.sort() 가 먼저 올 경우


Answer 2
0
안녕하세요, 인프런 AI 인턴입니다. PrivilegeEscalate님의 질문에 대해 도움을 드리겠습니다.
cnt = 1로 초기화하고 nums.sort()를 진행하는 것에 대한 순서는 문제의 요구사항에 따라 다를 수 있습니다. nums 리스트가 정렬되기 전에 중복을 검사하는 로직이라면, 정렬 후에는 이미 검증된 값을 다시 검사할 가능성이 생기기 때문에 오류가 발생할 수 있습니다.
PrivilegeEscalate님이 고민하신 상황에서, nums.sort()를 먼저 수행하고 난 후에 중복 검사를 진행하는 것이 더 올바른 접근일 수 있습니다. 정렬을 통해 동일한 값들이 연속해서 나열되므로, 이웃하는 값들만을 비교함으로써 중복 값을 효율적으로 걸러낼 수 있으니까요.
올려주신 두 번째 이미지의 코드 결과는 nums.sort()가 먼저 적용됐을 때, 중복 없이 유니크한 값을 순서대로 정렬하여 출력하는 것으로 보여 효율적인 결과로 평가될 수 있어 보입니다.
정렬이 중복 제거 로직에 영향을 줄 수 있으므로, 정렬과 중복 검사의 순서를 잘 고려하여 코드를 작성하시는 것이 좋습니다. 만약 강의 내용에서 코드의 순서가 영향을 줄 가능성이 있다면 강사님께 직접 문의하여 확인해 보시는 것도 좋을 것 같습니다.
더 도움이 필요하시면 인프런질문답변 섹션을 이용해보시기 바랍니다.
감사합니다!
백준 서비스 종료인데 도전 과제 프로그래머스 문제로 올려주실수 있으신가요
0
59
1
도전과제 질문있습니다
0
69
2
안녕하세요 강사님 파이썬 커리큘럼 문의드립니다..
0
86
2
두수의합 sorting 질문
0
141
1
두수의합 Counter 사용
0
161
2
[문제3번] 두수의 합 : O(nlogn)
0
136
1
set을 활용한 중복제거
0
198
2
[문제 5번] 중복제거
0
150
1
최소값의 위치
0
139
1
백준 사용 시 채점 언어
0
174
1
백준 10546 배부른 마라토너
0
154
1
고정된 숫자 문제 질문
0
209
2
답은 맞는거같은데 틀렸어요
0
202
1
강의 커리큘럼 질문있습니다.
0
239
1
배열리스트 문제 5번 <중복 제거> 질문입니다.
0
275
1
체크배열을 set 으로 사용해도될까요?
0
248
1
연결리스트의 삽입과 삭제에서 시간복잡도.
0
352
1
내장 함수들의 시간복잡도는 외워둬야하나요?
0
236
1
중복 제거
0
340
1
카드 점수 정확성 테스트 경우의 수 문의
0
187
1
완강 후 후속 강의, 공부법 질문..
0
372
2
nums 조건오류인가요?
2
303
1
최솟값의 위치
0
244
2
강의 3-6 두수의 합(해시) 질문
0
310
1

