본문 바로가기

전체 글625

leetcode : 1890. The Latest Login in 2020 leetcode : 1890. The Latest Login in 2020[leetcode : 1890. The Latest Login in 2020]다이어그램erDiagram UserLogs { int user_id datetime time_stamp }2020년 로그 중 가장 마지막 로그 (유저 별)문제 풀이MySQL 1SELECT USER_ID, MAX(TIME_STAMP) AS LAST_STAMPFROM LOGINSWHERE YEAR(TIME_STAMP) = '2020'GROUP BY USER_IDGROUP BY + MAXMySQL 2WITH TEMP AS (SELECT *, ROW_NUMBER() OVER (PARTITION BY USER_ID ORDER BY.. 2025. 2. 11.
leetcode : 1873. Calculate Special Bonus leetcode : 1873. Calculate Special Bonus[link]다이어그램erDiagram Employees { int employee_id PK varchar name int salary }인덱스 짝수이면서 M이 아닌 사람의 보너스 구하기 문제 풀이MySQLSELECT EMPLOYEE_ID, IF(EMPLOYEE_ID%2=0 OR SUBSTR(NAME,1,1)='M',0,SALARY) AS BONUSFROM EMPLOYEESORDER BY EMPLOYEE_IDCASE WHEN보다 IF 내에 OR로 조건걸어서 쓰는게 더 깔끔해보인다.AND 대신 OR쓰는게 더 빨라서 OR 사용.MySQLSELECT EMPLOYEE_ID, IF(.. 2025. 2. 10.
[파이썬, 자바] 백준 1800 : 인터넷 설치 (골드1) [파이썬, 자바] 백준 1800 : 인터넷 설치 (골드1)https://www.acmicpc.net/problem/1800풀이방향성 생각DFS로 node N까지 경로 메모리에 저장한다든가, 탐색을 여러 번 진행하면 TLE 발생.limit원까지 지불할 수 있을 때 node N까지 도달할 수 있냐 없냐를 확인한다.금액 크기가 $10^6$이므로 이분탐색 20번 정도면 풀이가 가능하다.$O(20*NlogN)$이고 N이 크지 않아서 시간은 널널하게 풀이가 가능이분탐색은 가장 비싼 간선 limit 제한이 걸렸을 때 node N까지 진행이 가능한가를 확인하고, 다익스트라는 N번 노드까지 사용한 전선의 개수를 기록한다. 파이썬import heapq as hqimport sysinput = lambda : sys.std.. 2025. 2. 10.
leetcode : 1789. Primary Department for Each Employee leetcode : 1789. Primary Department for Each Employee[leetcode : 1789. Primary Department for Each Employee]다이어그램erDiagram EmployeesDepartments { int employee_id FK int department_id FK varchar primary_flag } Employees ||--o{ EmployeesDepartments: "assigned to" Departments ||--o{ EmployeesDepartments: "includes"각 사람들의 메인 부서 찾기부서가 여러개면 Y FLAG를 찾아준다.아닌 경우 GROUP BY .. 2025. 2. 9.