1. 이번주 주요 학습 내용
1)SQL
<문제 116. 1321. Restaurant Growth : 윈도우 함수-집계 행 지정, LIMIT 활용>
with cte as
(select visited_on,
sum(amount) as amount
from customer
group by visited_on)
select visited_on,
sum(amount) over (order by visited_on rows between 6 preceding and CURRENT ROW) as amount,
round(avg(amount*1.00) over (order by visited_on rows between 6 preceding and current row), 2) as average_amount
from cte
order by visited_on
limit 6, 18446744073709551610;
*윈도우 함수 행 지정 익혀 둘 것! : sum() over (order by ~ rows between ~ preceding and current row)
sum(amount) over (order by visited_on rows between 6 preceding and CURRENT ROW
<문제 124. 1484. Group Sold Product By The Date : GROUP_CONCAT>
SELECT
sell_date,
COUNT(DISTINCT product) AS num_sold,
GROUP_CONCAT(DISTINCT product ORDER BY product) AS products
FROM Activities
GROUP BY sell_date
ORDER BY sell_date;
GROUP_CONCAT() : 그룹화한 데이터를 그대로 나열해주는 함수. GROUP BY와 같이 씀
*GROUP_CONCAT() 내 변수들 익혀둘 것 : order by, separator ' '
group_concat(distinct product order by product separator ':') as products
- 위와 같은 경우, 단어 사이가 ':'으로 구분됨
- 디폴트 : 쉼표(,)로 구분
<문제126 Find Users With Valid E-Mails : 정규표현식>
select *
from users
where mail regexp '^[a-zA-Z][a-zA-Z0-9_.-]*@leetcode[.]com$'
정답 해설
- ^[a-zA-Z] : 맨 앞글자가 소문자 혹은 대문자 알파벳으로 이뤄져있어야 함('^' : 맨 앞글자 의미)
- [a-zA-Z0-9_.-]* : 맨 앞글자 뒤에 소문자/대문자 알파벳 혹은 아무 숫자, '_', '.', '-' 등이 0번 이상 와야 함(*)
- @leetcode : 도메인이 leetcode가 와야함
- \\. or [.] : 정규표현식의 경우 보통 '.'은 어떤 문자와도 매칭되는 특수 문자로 사용되기 때문에 특수 문자가 아닌 일반 문자로서 사용하기 위해서 별도의 처리가 필요함. '\\' 또는 대괄호를 써서 일반 문자로 인식하게 할 수 있으나, 전자가 더 일반적임.
- com$ : 맨 마지막에 와야하는 문자의 경우 '$'를 붙임
2)Python
<문제24. 서울에서 김서방 찾기 : F-String, 문자열 포맷(FORMAT()), INDEX()>
작성한 답
def solution(seoul):
location = 0
for x in seoul:
if x == "Kim":
return f"김서방은 {location}에 있다"
else:
location += 1
간만에 f-string 활용해서 문제 해결.
간단한 답
def solution(seoul):
return '김서방은 {}에 있다'.format(seoul.index("Kim"))
혹시나 했는데 역시나. f-string을 활용하는 것보다 훨씬 간단한 답이 있었다.
FORMAT() 매서드 : str.format()
- 문자열 뒤에 사용하는 매서드.
- 중괄호와 함께 사용하며, 중괄호에 넣을 내용을 괄호 안에 입력.
- 중괄호 내에 채울 내용을 용도에 맞게 설정할 수 있음.
- 서식 지정 가능(숫자 - 소수점 어떻게 표현할 것인가 등)
- 중괄호 내 인덱스 지정(숫자 입력)해서 입력 순서 설정 가능
- 딕셔너리와 함께 사용해서, 키워드 통해 여러 값 입력 가능
INDEX() 매서드
- 문자열, 리스트, 튜플 자료형에서 특정 문자의 위치를 찾아줌
- 찾는 문자열이 없으면 value error 발생
- *find() 매서드 : 문자열에만 사용 가능. 찾는 문자가 없을 경우 -1 반환
2. WEEKLY TMI
- 이삿짐 때문에 허리 삐끗한거가 나을듯 말듯 하다 이번주에 또 안 좋아져서 밤을 조금 설쳤더니 일주일의 절반을 낮동안 골골거린듯ㅋㅋㅋ 결국 점심시간 이용해서 한의원을 갔다오긴 했지만 아직 완전히 나은 것은 아닌듯하다ㅠ
- 어찌어찌 들어야하는 강의를 다 들어가고, 과제도 제출하긴 했는데 골골거렸던 것 때문에 계획이 조금 틀어져버렸다. 원래는 어제까지 여유있게 강의 듣고 과제도 여유있게 끝내고 적당히 복습하다가 ADsP 공부도 하고, 프로젝트 주제도 찾고, 이전 강의들 복습도 좀 하고 그럴려고 했는데...에효 인생 주말에 여행 갔다오고 나서 부지런히 공부해야지.