SQL 코드카타 125번
복잡한 함수나 쿼리 구조 필요없이 그냥 풀면 되는 문제.
SELECT p.product_name,
a.unit
FROM (SELECT product_id,
Sum(unit) AS unit
FROM orders
WHERE Year(order_date) = '2020'
AND Month(order_date) = '02'
GROUP BY 1) a
LEFT JOIN products p
ON a.product_id = p.product_id
WHERE a.unit >= 100
SQL 코드카타 126번
MySQL의 정규표현식을 묻는 문제.
한창 GA를 부지런히 다루던 때에는 정규식에도 익숙했는데, 역시 오랫동안 안 쓰다보니 까먹게 되기 쉽다.
SELECT *
FROM users
WHERE mail REGEXP '^[a-zA-Z][a-zA-Z0-9_.-]*@leetcode[.]com$';
간단한 정규표현식 해설.
SQL 코드카타 127번
갑자기 사이트가 해커랭크로 바뀌었다?
SELECT *
FROM city
WHERE population > 100000
AND countrycode = 'USA'
select name
from city
where population > 120000 and countrycode = 'USA'
오늘 SQL파트는 어려움 없이 해결.
그리고 lv7로 올랐다!!🏅
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
sorted함수를 써서 의외로 간단하게 해결했던 문제.
정답 코드는 아래와 같다.
def solution(strings, n):
y = sorted(strings, key=lambda x : (x[n],x))
return y
y는 주어진 string를 정렬한 새로운 리스트인데,
정렬 기준이 흔히 쓰는 오름차순, 내림차순이 아니라서 key값으로 lambda를 활용해 주었다.
lambda 뒤의 x는 정렬할 대상이 되는 리스트 strings의 각 원소들이고(따라서 이 문제에서는 굳이 반복문을 쓸 필요가 없음), 정렬 기준은 각 원소 x의 n번째 인덱스, 즉 x[n]이 된다. 만약 strings가 ["sun", "bed", "car"]이고 n=1이면 x[n]은 u,e,a이므로 a,e,u 순으로 정렬이 되는 것. 여기서 내림차순으로 조건을 바꾸고 싶다면 -x[n]으로 표기해 주면 된다.
그리고 동시에, x[n]의 값이 동일할 경우 원래 strings에 담긴 요소 x를 기준으로 오름차순 정렬해야 하므로 x[n]:x 이렇게 짝을 지어서 정렬 기준을 설정해 주었다. 다만 이 때, x:x[n] 순서로 넣어주게 되면 x에 대한 오름차순 정렬을 먼저 진행하고 그 뒤에 x의 n번째 인덱스 기준으로 정렬하게 된다. 순서에 대한 부분만 조금 더 신경쓸 것.