Algorithm/Greedy (43) 썸네일형 리스트형 (C++) - leetcode 2007번 : Find Original Array From Doubled Array https://leetcode.com/contest/biweekly-contest-61/problems/find-original-array-from-doubled-array/ Account Login - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com greedy? 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 나온 수를 세줄 일차원 배열 countNum, 수가 사용되었는지의 여부를 저장할 isUsed 배열, 정답을 반환할 vector ans를 선언합니다. 1. .. (C++) - 백준(BOJ) 17521번 : Byte Coin https://www.acmicpc.net/problem/17521 17521번: Byte Coin 입력은 표준입력을 사용한다. 첫 번째 줄에 요일 수를 나타내는 양의 정수 n과 초기 현금 W(1 ≤ n ≤ 15, 1 ≤ W ≤ 100,000)가 주어진다. 다음 n 개의 줄에서, i번째 줄은 i일의 바이트 코인 가격을 나 www.acmicpc.net greedy문제였습니다. 📕 풀이방법 📔 입력 및 초기화 n, w, coinNum, 일차원 배열 coinPrice를 long long형으로 선언합니다. 📔 풀이과정 coinPrice[i] < coinPrice[i + 1] 이라면 i번째 날에서 매수, i+1번째 날에 매도하는 것이 무조건 이익을 취할 수 있는 방법입니다. i번째 산 코인의 개수를 coinNum.. (C++) - 백준(BOJ) 14916번 : 거스름돈 https://www.acmicpc.net/problem/14916 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net greedy 문제였습니다 📕 풀이방법 📔 입력 및 초기화 변수 n을 선언 후 입력받습니다. 📔 풀이과정 1. 만들 수 없는 경우는 1과 3뿐입니다. 그 이상부터는 짝수는 2로, 5가 포함된다면 홀수도 나타낼 수 있기 때문에 표현가능합니다. 따라서 이 경우에는 -1을 출력합니다. 2. 나머지는 최소로 나타내기 위해 최대한 5를 사용하면 되므로 n을 5로 나눈 나머지가 짝수인지 홀수인지 여부에 따라 답이 나뉩니다. 2-1. 짝수인 경우 5로 나눠준 몫 + 5로 나눈 나머지를 2로 나눈 몫이 답이 됩니다. 2-2. 홀수인.. (C++) - 백준(BOJ) 18234번 : 당근 훔쳐 먹기 https://www.acmicpc.net/problem/18234 18234번: 당근 훔쳐 먹기 첫 번째 줄에 N(1 ≤ N ≤ 200,000)과 T(N ≤ T ≤ 100,000,000)가 공백으로 구분되어 주어진다. 오리는 당근의 맛을 충분히 높이기 위해 항상 N이상인 T일 동안 재배한다. 다음 N개의 줄에 걸쳐서 i+1번째 www.acmicpc.net greedy 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 * 먹은 당근의 합을 구하는 과정에서 21억을 초과할 수 있으므로 long long으로 변수를 선언해줍니다. n만큼 w,p를 입력받아야하므로 vector pair long long 형태로 변수 carrot을 선언해줍니다. 📔 풀이과정 키워서 먹는다라는 말이 있습니다. 그 말은 p가 크면 클 수.. (C++) - 백준(BOJ) 6068번 : 시간 관리하기 https://www.acmicpc.net/problem/6068 6068번: 시간 관리하기 성실한 농부 존은 시간을 효율적으로 관리해야 한다는 걸 깨달았다. 그는 N개의 해야할 일에 (1 n; for(int i = 0,t,e; i > t >> e; v.push_back({t,e}); } sort(v.begin(),v.end(),cmp); for(int i = n-1; i >= 0; i--){ ans = min(ans, v[i].endTime); ans -= v[i].timeNeed; } if(ans < 0) cout (C++) - 백준(BOJ) 11608번 : Complexity https://www.acmicpc.net/problem/11608 11608번: Complexity Print, on a single line, the minimum number of times you need to use the eraser. www.acmicpc.net greedy문제였습니다. 📕 풀이방법 '최소'로 문자들을 지움으로써 알파벳의 종류가 2개 이하가 되게 하려면 말 그대로 빈도수가 많은 2종류를 제외한 나머지를 지우면 됩니다. 📔 입력 및 초기화 입력을 받습니다. 입력받은 문자열에 대해 나온 알파벳의 개수를 세줍니다. 📔 풀이과정 1. 나오지 않은 알파벳은 제외하고 나온 알파벳들의 빈도 수를 vector변수에 저장합니다. 그러면서 나온 알파벳의 종류 또한 세주어 변수 cnt에 저장합니.. (C++) - 프로그래머스(Summer/Winter Coding(~2018)) : 기지국 설치 https://programmers.co.kr/learn/courses/30/lessons/12979 코딩테스트 연습 - 기지국 설치 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5 programmers.co.kr 그리디 문제였습니다. 풀이방법 아파트의 개수가 최대 2억이기 때문에 배열로 체크하는 형식은 불가합니다. 따라서 회색 부분의 길이들을 모두 구해서 저장한 뒤 순차적으로 기지국을 설치해줘야합니다. 1. 영역 구하기 회색 부분의 영역은 3가지 형태로 존재합니다. 1-1. 가장 왼쪽 영역 : 이 경우에는 1번 아파트 부터 처음 설치된 기지국까지의 길.. (C++) - 백준(BOJ) 1343번 : 폴리오미노 www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net greedy 문제였습니다. 풀이방법 1. '.'이 있는 좌표, 끝에 도당했다면 끝의 좌표 + 1을 queue에 저장합니다. 2. queue가 빌 때까지 다음을 수행합니다. 2-1. piv를 4개씩 보고 옮겨주면서 queue front()까지 "AAAA"를 정답 변수 ans에 붙입니다. 2-2. piv를 2개씩 보고 옮겨주면서 queue front()까지 "BB"를 정답 변수 ans에 붙입니다. 2-3. '.'을 ans에 붙입니다. 2-4. piv를 queue의 front() + 1로 갱신해줍니다. 2-5. pop(.. 이전 1 2 3 4 5 6 다음