본문 바로가기

leetcode15

[LeetCode601] Human Traffic of Stadium 방문자수가 100이 넘는, id가 연속으로 3 이상인 경우만 나타내보려고 한다. lead와 leg를 사용하여 케이스를 만든다. select id, visit_date, people from (select id, visit_date, people, lead(people, 1) over (order by id) as after1, lead(people, 2) over (order by id) as after2, lag(people, 1) over (order by id) as pre1, lag(people, 2) over (order by id) as pre2 from stadium) as A where A.people>99 and ((A.after1>99 and A.after2>99) or (A.pre1 .. 2023. 1. 23.
[LeetCode185] Department Top Three Salaries 연봉 정보 테이블과 부서 정보 테이블을 병합하여 부서별 unique한 값으로 top3 연봉 받는 사람을 나타내보자. 테이블 병합까지는 쉬운데 부서별 top 3를 어떻게 나타낼 것인가. 우선 연봉에 순위를 매긴다. 같은 값에 대해 같은 순위를 부여하고 그 외 순차적인 값을 매기는 dense_rank 를 사용한다. 연봉 높은 순이므로 over 뒤에는 order by salary desc 가 들어가야 한다. 두번째로 부서별 정보를 넣는다. partition by 를 이용하면 그룹별 집계를 쉽게 할 수 있다. select Department, Employee, Salary from (select d.name as Department, e.name as Employee, e.salary as Salary, den.. 2023. 1. 21.
[LeetCode 3] Longest Substring Without Repeating Characters 풀이 문제 : 단어 변수 s를 받고 반복되지 않는 글자 수의 최댓값 return 하기 예시 : "abcabcbb" 에서 "abc" 가 중복되지 않으면서 글자수가 가장 김. 따라서 답은 3 풀이 : 변수 초기값 설정한다. used : 사용한 알파벳과 위치를 저장하기 위한 빈 dictionary max_length : 최대 단어 길이 start : 단어 길이를 재기 위한 시작 위치 used = {} max_length = start = 0 단어를 loop에 넣는다. 알파벳 길이를 쉽게 알기 위해 enumerate를 씌운다. for idx, c in enumerate(s): 아래 코드부터는 모두 loop 안에 들어간다. 딕셔너리에 순번인 알파벳(c)이 들어있고, 그 알파벳의 기존 위치가 start 변수 값보다 크면.. 2022. 12. 27.