분류 전체보기 83

1075. Project Employees I

문제https://leetcode.com/problems/project-employees-i/description/문제 설명각 project_id별로 그 프로젝트에 참여한 직원들의 평균 경력(experience_years)을 계산해서,소수점 둘째 자리까지 반올림(ROUND) 한 값을 구하기정답 코드SELECT p.project_id, ROUND(SUM(e.experience_years)/COUNT(p.project_id),2) AS average_yearsFROM project p LEFT JOIN employee e ON p.employee_id = e.employee_idGROUP BY p.project_id개선점SUM()/COUNT()로도 가능하지만 → AVG(e.experience_ye..

1251. Average Selling Price

문제https://leetcode.com/problems/average-selling-price/description/문제 설명 요구사항: 각 제품별 평균 판매 단가 계산평균 판매 단가 = (price × units) 총합 ÷ 총 판매 수량소수점 둘째 자리까지 반올림판매 기록이 없으면 평균 판매가 0으로 처리정답 코드SELECT p.product_id, IFNULL(ROUND(SUM(u.units*p.price)/SUM(u.units),2),0) AS average_priceFROM prices p LEFT JOIN unitssold u ON p.product_id = u.product_id AND u.purchase_date BETWEEN p.start_date AND p.end_..

[LV.4] 연습문제 > 둘만의 암호

문제https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 설명문자열 암호화 규칙문자열 s의 각 알파벳을 index만큼 뒤로 밀어준다.z를 넘어가면 다시 a로 순환한다.단, skip에 포함된 알파벳은 건너뛴다. (즉, 밀 때 세지 않는다)예시s = "aukks"skip = "wbqd"index = 5→ "happy"참고import string파이썬 내장 모듈 string을 불러오는 코드로, 문자열 처리에 자주 쓰이는 상수들을 제공'abcdefghijklmnopqrstuvwxyz' → string.asc..

620. Not Boring Movies

문제https://leetcode.com/problems/not-boring-movies/description/문제 설명영화 테이블(Cinema)에서id가 홀수이고, description이 "boring"이 아닌 영화만 선택rating 기준으로 내림차순 정렬정답 코드SELECT *FROM cinemaWHERE id%2 != 0 AND description != 'boring'ORDER BY rating DESC참고 MySQL 전용으로는 → id % 2 != 0 더 간결하고 직관적SQL 표준이나 다른 DB 호환성(Oracle, SQL Server 등)을 고려한다면 → MOD(id, 2) = 1이 더 안전SELECT *FROM cinemaWHERE MOD(id, 2) = 1 AND description !=..

1934. Confirmation Rate

문제https://leetcode.com/problems/confirmation-rate/description/문제 설명각 사용자의 확인율(confirmation rate) 을 계산하라.Signups : 모든 가입자 (user_id, 가입 시각)Confirmations : 각 가입자가 보낸 “확인 요청” 기록action 값은 'confirmed' 또는 'timeout'확인율 = confirmed 개수 / 전체 요청 개수확인 요청이 없는 사용자의 경우 → 확인율은 0.00결과는 소수점 둘째 자리까지 반올림정답 코드SELECT s.user_id, CASE WHEN c.action IS NULL THEN 0.00 ELSE ROUND(SUM(c.action = "confirmed")/CO..

570. Managers with at Least 5 Direct Reports

문제https://leetcode.com/problems/managers-with-at-least-5-direct-reports/description/문제 설명직속 부하가 5명 이상인 매니저의 이름을 출력정답 코드SELECT nameFROM employeeWHERE id IN (SELECT managerId FROM employee GROUP BY managerID HAVING count(managerID) >= 5)개선된 코드SELECT nameFROM employeeWHERE id IN ( SELECT managerId FROM employee WHERE managerId IS NOT NULL GROUP BY man..

1280. Students and Examinations

문제https://leetcode.com/problems/students-and-examinations/description/문제 설명모든 학생(Students)과 모든 과목(Subjects)의 조합에 대해, 각 학생이 해당 과목 시험을 몇 번 응시했는지 구하는 쿼리 작성결과응시 기록이 없는 경우(0)도 포함student_id, subject_name 순으로 정렬정답 코드SELECT s.student_id, s.student_name, su.subject_name, COUNT(e.subject_name) AS attended_examsFROM students s CROSS JOIN subjects su LEFT JOIN examinations e ON s.stu..

[LV.4] 연습문제 > 대충 만든 자판

문제https://school.programmers.co.kr/learn/courses/30/lessons/160586 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 설명keymap[i]: (i+1)번 키에 할당된 문자들예: keymap[0] = "ABACD" → 1번 키를 누르면 순서대로 A(1번), B(2번), A(3번), C(4번), D(5번)targets: 만들고 싶은 문자열들목표: 각 문자열을 만들기 위해 키를 최소 몇 번 눌러야 하는지 계산→ 특정 문자를 만들 수 없으면 -1 반환예시풀이 흐름문자별 최소 누름 수 기록→ 모든 키(keymap)를 돌며 각 문자에 대해 가장 적은 누름 수를 저장tar..