boj
프로그래머스 코딩테스트 연습 - 예산 (Level 1)
문제 프로그래머스 코딩테스트 연습 - 예산 (Level 1) https://programmers.co.kr/learn/courses/30/lessons/12982 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 programmers.co.kr 사용 알고리즘 - Greedy 풀이 greedy적 접근. 오름차순으로 정렬해서 budget을 넘기 전까지 누적해 더해가며 몇 개를 더했는지를 계산한다. 나의 코드 #include #include #include #include #include using namespace std; int solution(v..
백준 BOJ 2109 순회강연
문제 백준 BOJ 2109 순회강연 https://www.acmicpc.net/problem/2109 2109번: 순회강연 한 저명한 학자에게 n(0 ≤ n ≤ 10,000)개의 대학에서 강연 요청을 해 왔다. 각 대학에서는 d(1 ≤ d ≤ 10,000)일 안에 와서 강연을 해 주면 p(1 ≤ p ≤ 10,000)만큼의 강연료를 지불하겠다고 알려왔다. www.acmicpc.net 사용 알고리즘 Data structures Greedy Sorting Priority queue 풀이 d(마감일) 기준으로 오름차순 정렬 후 차례대로 우선순위큐에 넣을지 말지를 판단. 우선순위큐의 size
백준 BOJ 2616 소형기관차
문제 백준 BOJ 2616 소형기관차 https://www.acmicpc.net/problem/2616 2616번: 소형기관차 첫째 줄에 기관차가 끌고 가던 객차의 수가 입력된다. 그 수는 50,000 이하이다. 둘째 줄에는 기관차가 끌고 가던 객차에 타고 있는 손님의 수가 1번 객차부터 차례로 입력된다. 한 객차에 타고 있 www.acmicpc.net 사용 알고리즘 Dynamic programming Prefix sum 풀이 누적합 + DP. 우선 소형 기관차가 최대로 끌 수 있는 객차의 수에 해당하는 길이의 구간마다 합을 구해 놓고 2차원 DP를 돌림. dp[i][j]=max(dp[i-1][j],dp[i-m][j-1]+b[i]); dp[i][j] = i번째 객차까지 j개의 소형기관차를 썼을 때 최댓값.
백준 BOJ 10800 컬러볼
문제 백준 BOJ 10800 컬러볼 https://www.acmicpc.net/problem/10800 10800번: 컬러볼 첫 줄에는 공의 개수를 나타내는 자연수 N이 주어진다(1 ≤ N ≤ 200,000). 다음 N개의 줄 중 i번째 줄에는 i번째 공의 색을 나타내는 자연수 Ci와 그 크기를 나타내는 자연수 Si가 주어진다(1 ≤ Ci ≤ N www.acmicpc.net 사용 알고리즘 Implementation Sorting Prefix sum 풀이 {크기, 색깔, index} 를 원소로 하는 3진 pair를 만들어 크기를 기준으로 정렬. 누적 합을 구하면서 색깔별 누적 합도 따로 구해줌. 같은 색깔 + 같은 크기일 경우에도 따로 처리. 아이디어 구상은 쉬우나 예외 처리 부분이 신경 쓸 게 많았음.
백준 BOJ 11683
문제 백준 BOJ https://www.acmicpc.net/problem/11663 11663번: 선분 위의 점 첫째 줄에 점의 개수 N과 선분의 개수 M이 주어진다. (1 ≤ N, M ≤ 100,000) 둘째 줄에는 점의 좌표가 주어진다. 두 점이 같은 좌표를 가지는 경우는 없다. 셋째 줄부터 M개의 줄에는 선분의 시작점과 www.acmicpc.net 사용 알고리즘 Binary search 풀이 n^2이면 시간 초과가 나기 때문에 brute force는 안되고 이분 탐색을 써야 한다. 선분의 왼쪽 지점은 std:: lower_bound, 오른쪽은 std::upper_bound 사용하여 index를 각각 찾은 후 차이를 구해주면 된다. 점이 선분들 범위 밖을 아예 벗어났을 때 예외 처리를 따로 해주어야..
백준 BOJ 5582 공통 부분 문자열
문제 백준 BOJ https://www.acmicpc.net/problem/5582 5582번: 공통 부분 문자열 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들 www.acmicpc.net 사용 알고리즘 Dynamic programming String 풀이 2차원 DP. dp[i][j] = 첫번재 문자열 i까지, 두번째 문자열 j까지 봤을 때 최대 길이 if(s1[i]==s2[j]){ dd[i+1][j+1]=dd[i][j]+1;
백준 BOJ 20003 거스름돈이 싫어요
문제 백준 BOJ 20003 https://www.acmicpc.net/problem/20003 20003번: 거스름돈이 싫어요 프로불편러 지수는 딱 떨어지지 않는 수는 질색이다. 거스름돈이 남는 것도 딱 질색이다. 지수가 아이템을 사려 하는데, 아이템의 가격은 다 분수로 이루어져 있다. 지금은 가령, 3/2코인을 사려 www.acmicpc.net 사용 알고리즘 Mathematics Number theory Euclidean algorithm 풀이 우선 입력받은 값들을 모두 기약분수로 바꾸고 모든 분모들의 LCM을 구해 분모를 먼저 찾는다. 분모들을 LCM으로 통일시켜주면서 분자를 적절한 값을 곱해 수정한다. 분자들의 GCD를 구하면 출력해야 할 답의 분자가 된다. 답의 분자가 항상 1이 나올 것이라고 ..
백준 BOJ 1027 고층 건물
문제 백준 BOJ https://www.acmicpc.net/problem/1027 1027번: 고층 건물 세준시에는 고층 빌딩이 많다. 세준시의 서민 김지민은 가장 많은 고층 빌딩이 보이는 고층 빌딩을 찾으려고 한다. 빌딩은 총 N개가 있는데, 빌딩은 선분으로 나타낸다. i번째 빌딩 (1부터 시작) www.acmicpc.net 알고리즘 Brute force 풀이 각 건물에 대해 보이는 건물의 개수를 일일이 확인해본다. 건물 쌍 (l,r) (l