목록Baekjoon/Silver (86)
GitHubSeob

문제 https://www.acmicpc.net/problem/11508 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net 문제풀이 3개씩 묶을 때 가장 싼 유제품이 무료가 된다. 비싼 물품이 무료가 되야 구매 비용이 싸진다. 가장 비싼 물품은 어떻게 묶든 절대로 무료로 살 수 없다. 따라서 내림차순으로 정렬을 하고 3개씩 묶고, 각 3번째 물품은 무료로 사면 된다. 코드 #include #include #include using namespace std; int main() { ios::sync_wi..

문제 https://www.acmicpc.net/problem/1758 1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같 www.acmicpc.net 문제풀이 팁이 음수가 될 수 는 없다, 음수가 될 경우 팁은 0원이다. 뒤로 갈수록 등수가 늘어나므로 팁은 점점 줄어들것이다. 팁이 0원이 되든 -100원이 되든 똑같은 0원이므로, 팁을 내림차순으로 하여 받으면 최대로 받을 수 있다. 코드 #include #include #include #define ll long long using namespace std; int ma..

문제 https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 문제풀이 1번 도시를 지나쳐 2번 도시에 도착했는데 기름의 가격이 더 비쌀 수도 있다. 그런 경우는 다시 1번 도시에서 기름을 채우면 된다. 이런 식으로 문제를 풀면 된다. 변수를 만들어 기름의 최소가격을 도시에 도착할 때마다 갱신하고, 도로의 길이만큼 최소 가격을 곱하면 된다. 코드 #include #include #define MAX 1000000000 #define ll ..

문제 https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 문제풀이 최대 중량이 낮은 로프의 중량 * 로프의 개수가 N개의 로프로 들 수 있는 최대 중량이다. 내림차순으로 정렬하게 되면 반복문을 실행할 때 해당 로프가 항상 최소 중량이므로 추가로 조건을 걸 필요가 없다. 따라서 반복하면서 answer는 answer, 현재 로프 중량 * 로프 개수 둘 중 큰 값으로 저장하면 된다. 코드 #include #include #include usin..

문제 https://www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 문제풀이 istringstream을 이용해 풀었다. 입력을 받으면 EOF까지 탐색하면서 구분자인 '.'을 기준으로 문자열을 자른다. '.'을 기준으로 나눴을 때 X가 홀수개라면 -1을 바로 출력한다. 그 외에는 X만큼 fill을 이용해 B를 먼저 채우고, 처음부터 4의 배수개까지 A로 채운다. 답에는 '.'도 포함해야 하므로 answer의 크기와 입력받은 input의 크기가 다르면 answer에 '.'을 더했다. 코드 #include #include #include #include #includ..

문제 https://www.acmicpc.net/problem/14916 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 문제풀이 이 문제는 수학적으로도 풀 수 있지만 DP로도 풀 수 있어서 DP로 풀었다. 1부터 N까지 거스름돈 동전 개수를 나타내기 위한 won 벡터와, 2원, 5원 동전이 들어있는 coin벡터를 선언했다. 거슬러 줄 수 없으면 -1을 출력해야 되기 때문에 벡터를 -1로 초기화했다. DP를 사용할 것이기 때문에 0원의 동전의 개수는 0으로 설정해 준다. 2원 동전부터 시작하여 2의 배수가 되면 2원을 뺀 금액의 동전의 개수+1을 한다. 5원 동전도 마찬가지로 5원부터 5원을 뺀 금액의 동전의 개수+1을 한다. 9..

문제 https://www.acmicpc.net/problem/2529 2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시 www.acmicpc.net 문제풀이 처음에는 작은 수부터 모든 경우의 수를 돌면서 판별을 했더니 답은 맞았지만, 100456KB / 136ms라는 결과가 나왔다.. 그래서 다른 답들을 봤더니 큰 수가 나오자마자 중단하고, 작은 수부터 큰 수로 탐색하면서 중간 과정을 자르고 탐색을 하길래 참고하였다. 0부터 9까지의 수를 이용하여 해당 부등호에 맞게 배치하면 된다. 큰 숫자 먼저 찾을 것이기 때문에 9부터 0까지 순서대로 들어간 n..

문제 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 문제풀이 mapbook을 선언한다. string인 key부분에는 책의 이름을, int인 value 부분에는 책의 개수를 입력한다. 입력을 받으면 book[책 이름]++을 하여 해당 책의 개수를 1 증가시킨다. 그다음 book[책 이름]의 값과 max_count 값을 비교하면서 max_count값을 최댓값으로 유지한다. map은 알아서 정렬되므로 iterator를 이용해 book의 처음..

문제 https://www.acmicpc.net/problem/10546 10546번: 배부른 마라토너 마라토너라면 국적과 나이를 불문하고 누구나 참가하고 싶어하는 백준 마라톤 대회가 열린다. 42.195km를 달리는 이 마라톤은 모두가 참가하고 싶어했던 만큼 매년 모두가 완주해왔다. 단, 한 명 www.acmicpc.net 문제풀이 프로그래머스 Level 1 완주하지 못한 선수 문제와 같다. unordered_map을 이용해서 풀었다. 참가자의 이름을 입력받을 때는 runner[이름] 값을 +1을 했고, N-1개의 완주한 참가자의 이름을 입력받을 때는 runner[이름] 값을 -1 했다. iterator을 이용해 runner을 탐색하면서 value값이 0이 아닌 값을 찾으면 key값을 출력하고 종료한다..