본문 바로가기
알고리즘/TIL

[코테스터디 day3] 정렬

by 모모_모 2024. 10. 31.

✏️ 정렬

in python

  • list1.sort()
    • 시간 복잡도 O(nlogn)에 근접 -> 최적화 잘되어있다고 함 (quicksort -> O(nlogn)) 
    • sort 옵션
      • sort(key=len) -> 정렬 기준을 지정하는 함수나 함수를 반환하는 식을 제공 (len 함수 등)
      • sort(reverse = True) -> 내림차순 정렬 (기본값 : 오름차순)
  • list1 = sorted(list2)

 

Lambda식

  • 기본 형식
    • lambda 인자: 반환값
    • lambda x:x[1] -> x 인자에서 index 1의 원소를 반환
  • lambda와 sort의 조합
    • sort(key=lambda x:x[0]) 

 

 

✏️  오늘의 문제 : 가장 큰 수

 

 

 

 

📌 주안점

  • 정렬의 기준을 잡는 문제 -> python의 key=lambda, java의 Comparator을 잘 구현하는 문제
  • 숫자로 가장 큰 수를 비교정렬하는 것보다, 문자로 비교하는 방식이 더 용이함
  • 문자열 비교 기준 (사전순)
    • "7" < "8"
    • "8" < "88"
    • "8" < "89"
    • "10" < "2"
    • 숫자가 작을수록, 길이가 짧을수록 더 앞
  • 1000을 제외한 모든 문자는(1~999) *3을 하고 앞 세자리만 비교한다면, 요구사항과 완벽히 부합
    • 1~9는 111,222,..,999로
    • 10~99는 101(010), 121(212), 565(656) 으로 가장 앞선 위치의 문자가 맨 뒤의 문자와 일치하므로, 앞 세자리를 비교해서 큰 수를 찾는 요구사항에 적합 
    • 100~999는 같은 문자 *3 이므로, 앞 세자리만 비교할 때 동일

📌 풀이

  • 숫자로 계속 시도하다 답을 찾아봤다.

 

 

 

 

✏️  추가 문제1 : K번째 수

 

풀이

  • 그냥 슬라이싱하고 정렬

 

 

'알고리즘 > TIL' 카테고리의 다른 글

[코테스터디 day5] 그리디  (0) 2024.11.04
[코테스터디 day4] 완전탐색  (0) 2024.11.01
[코테스터디 day2] 힙  (0) 2024.10.30
[코테스터디 day1] 스택 & 큐  (1) 2024.10.29
[99클럽 코테 스터디 38일차 TIL]  (0) 2024.06.27