본문 바로가기

매일 TIL

[내일배움캠프 6-5일] 최댓값과 최솟값, SQL 2주차

최댓값과 최솟값

https://school.programmers.co.kr/learn/courses/30/lessons/12939

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

갑자기 문제 난이도가 낮아졌다.

그렇지만 절대 하루에 코드카타 두개를 풀어선 안돼.

그래서 두가지 방법으로 풀어봄.

 

# max, min
# O(n)
def solution_min_max(s):
    s_lst = list(map(int, s.split()))
    answer = str(min(s_lst)) + " " + str(max(s_lst))
    return answer

첫번째는 max, min을 사용한 방법.

s = "1 2 3 4" 라는 문자열이라고 했을 때,

우선 문자열로 들어오는 s를 공백 기준으로 나눠 리스트로 변환. -> [1, 2, 3, 4]

해당 리스트의 최솟값 + 공백 + 리스트의 최댓값 출력하면 끝.

 

# 정렬
# O(n log n)
def solution_sorted(s):
    s_lst = sorted(list(map(int, s.split())))
    answer = str(s_lst[0]) + " " + str(s_lst[-1])
    return answer

두번째는 정렬을 사용한 방법.

문자열을 리스트로 변환하는 과정까지는 동일.

리스트를 오름차순 정렬 후, 리스트의 첫번째 인자 + 공백 + 마지막 인자 출력하면 끝.

 

  • max, min을 사용하면 O(n)의 시간복잡도를 가짐.
  • 정렬을 사용하면 O(n log n)의 시간복잡도를 가짐.

즉 max, min을 사용한 방법이 더 효율적이라고 할 수 있다.


SQL 1주차 과제

문제 : 음식 종류별 가장 높은 주문 금액과 가장 낮은 주문금액을 조회하고, 가장 낮은 주문금액 순으로(내림차순) 정렬하기

 

가져올 컬럼 : 음식 종류, 가장 높은 주문금액, 가장 낮은 주문금액

어떤 테이블로부터 : food_orders

조건 : X

어떤 항목을 기준으로 조회 : 음식 종류

어떤 항목을 기준으로 정렬 : 가장 낮은 주문금액(내림차순)

select cuisine_type, max(price) max_price, min(price) min_price

from food_orders

group by cuisine_type

order by min(price) desc


오늘의 회고

SQL은 아직 할만하다. 오늘도 2주차 과제까지 완료.

알고리즘을 안한지 얼마 되지도 않았는데 벌써 추억으로 남았다. 큰일났다 그냥.

 

내일은 쉬면서 CS 공부하자