[Problem Solving] BOJ 8980: 택배
문제 출처: https://www.acmicpc.net/problem/8980 본부에서 N번째 마을까지 이동할 때, 배송할 수 있는 최대 박스 개수를 출력해야하는 문제다. 우선 목적지를 기준으로 오름차순 정렬하고, 목적지가 같다면 출발지를 기준으로 오름차순 정렬한다. 목적지가 현재 트럭이 향하고 있는 곳 중에 가장 가까운곳에 먼저 박스를 내려야하고, 왼쪽에서 적재한 박스부터 우선적으로 내려야하기 때문이다. 우선 구간별 적재 가능량을 모두 C로 설정한다. 박스의 목적지가 e라면 [s, e) 구간에서 적재 가능량이 가장 조금 남은 것을 구해서, [s, e)에서 그 만큼 빼준다. C가 60이고, remain이 다음과 같은 상황(중간 과정은 생략)이라고 가정하자{30, 60, 20, 60, 60, 60} 2에서..
2025. 8. 27.
[Problem Solving] BOJ 2608: 로마 숫자
문제 출처: https://www.acmicpc.net/problem/2608 로마숫자를 입력 받아서 합한 다음, 아라비아 숫자와 로마 숫자로 출력하는 문제이다. 먼저 로마 숫자를 아라비아 숫자로 변환할 때, 앞에 두개가 아라비아 숫자로 만들 수 있는 건지 확인먼저 하고 그렇지 않다면 앞에 하나를 아라비아 숫자로 만들 수 있는 건지 확인한다. 아라비아 숫자를 로마 숫자로 변환할 때는, (아라비아 숫자, 로마 숫자) 쌍을 내림차순으로 정렬해 놓고, 큰 수 부터 뺄 수 있는 만큼 빼고 그것의 로마 숫자를 하나씩 추가한다. import sysread = sys.stdin.readlinerom = { "I": 1, "V": 5, "X": 10, "L": 50, "C": 100, ..
2025. 8. 22.
[Problem Solving] 프로그래머스 SQL 고득점 Kit: 년, 월, 성별 별 상품 구매 회원 수 구하기
문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/131532 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr USER_INFO와 ONLINE_SALE은 USER_ID라는 공통의 Column을 가지고 있기 때문에, 이를 JOIN하는 데 사용할 수 있다.그냥 JOIN해서 년, 월, 성별을 출력하면, 동일한 년, 월에 구매한 회원이 중복으로 출력된다. 그렇기 때문에 USER_ID에 DISTINCT를 걸어서 중복을 제거한다.서브쿼리는 다음과 같다.SELECT DISTINCT UI.USER_ID, YEAR(SALES_DATE) AS YEAR, MONTH(..
2025. 8. 18.