TIL

2024-04-01

여연찌 2024. 4. 1. 18:53
  • 오늘 진행한 일

 

1. SQL 코드카타 (46~50번)

2. 알고리즘 코드카타 복습 풀이

 


  • 기억할 내용

 

SQL

https://lyj-01.tistory.com/62

 

즐겨찾기가 가장 많은 식당 정보 출력하기 # 다중컬럼 IN

REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주

lyj-01.tistory.com

select food_type, rest_id,rest_name, max(favorites)
from rest_info
group by food_type

이렇게 쿼리를 작성했더니

rest_id 와 rest_name 에는 

GROUP BY 조건이 없어 첫번째 행의 값이 입력되었다.

select food_type, rest_id,rest_name, favorites
from rest_info
where (food_type,favorites) IN (select food_type,max(favorites) from rest_info group by food_type) 
order by food_type desc

rest_id 와 rest_name  에도 MAX(favorites) 값과 일치하는 데이터들이 들어가게 하기 위해

where 절에 서브쿼리를 사용해서 IN 조건을 주고 일치하는 값들을 찾아주었다!

 

서브쿼리를 어디에 사용할 수 있는지는 알고있었지만 사용하는 방법을 몰랐는데

where 절에 넣어 조회할 수 있다니 너무 좋았다!

 


 

파이썬

 

두 정수 사이의 합

https://lyj-01.tistory.com/53

 

두 정수 사이의 합 # min(),max()

https://school.programmers.co.kr/learn/courses/30/lessons/12912 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는

lyj-01.tistory.com

def solution(a,b):
    if a<=b:
        return sum(range(a,b+1))
    if a>b:
        return sum(range(b,a+1))

 

지난주에는 if 조건을 여러개 쓸 생각조차 못했었는데

이번에는 두개의 조건을 주면서 풀어볼 수 있었다

return sum(range(min(a,b),max(a,b)))

이렇게 코드를 짜면 훨씬 간결하고 깔끔해보이니

이정도 수준으로 올라갈 수 있을 만큼 발전해보자

하지만 자꾸 반복하다보니 두번째 코드를 외워서 쓰게 되더라..

 

 

하샤드 수 

https://lyj-01.tistory.com/47

 

하샤드 수

https://school.programmers.co.kr/learn/courses/30/lessons/12947 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는

lyj-01.tistory.com

양의 정수 18을 각각 리스트로 나누어 주고 싶을 때

list(map(int,str(18)))

리스트로 쪼개어주기 위해 18을 문자열로 나누고

그 이후 연산작업을 하기 위해 숫자형으로 변경하기 위해 map 함수를 사용하였다.

애초에 숫자형 1과 8로는 나눌 수 없는지 의문이다.

 

 

정수 내림차순으로 배치하기

https://lyj-01.tistory.com/40

 

정수 내림차순으로 배치하기 # sort, ''.join()

def solution(n): result = list(str(n)) result.sort(reverse = True) return int(''.join(result)) ① result = list(str(n)) # n을 문자열로 바꾸어 리스트를 만들어준다 >> ['1','1','8','3','7','2'] ② result.sort(reverse = True) # 리스트를

lyj-01.tistory.com

def solution(n):
    answer = list(str(n))
    answer.sort(reverse=True)
    return int("".join(answer))

문자열로 만들어진 n 리스트를 다시 숫자형으로 바꿔 return 해주었다.

return 쪽을 깔끔하게 적어주고 싶어서 하샤드 수에서처럼 map 함수를 사용하여 int 형으로 바꿀 수 없을까했는데

sort() 는 문자열을 기준으로 정렬하기 때문에 불가능했다.

 

 

 


  • 내일 진행 예정

1. SQL 코드카타

2. 알고리즘 코드카타 복습

3. 알고리즘 코드카타 새로운 문제 풀이

'TIL' 카테고리의 다른 글

2024-04-03  (0) 2024.04.03
2024-04-02  (0) 2024.04.02
2024-03-31  (0) 2024.03.31
2024-03-30  (1) 2024.03.30
2024-03-29  (1) 2024.03.29