1. 문제 설명문제 바로 가기 2. 풀이 과정문제 해결의 흐름기능 순서대로 개발함을 인지하자. progresses 배열을 순회하며 기능개발에 걸리는 시간(days)을 구하자.days가 큐에 저장된 이전 값보다 크다면 이전 작업의 개발에 현재 작업이 포함되지 않기에 끊어주어야 한다.작거나 같다면 현재 작업이 이전 작업에 포함되기에 끊어주지 않아도 된다.코드 #include #include #include using namespace std;vector solution(vector progresses, vector speeds) { vector answer; queue q; for (int i = 0; i 3. 후기 관심 있는 부분이 days가 가장 큰 q.front() 값임이 파악되면 ..
C++
1. 문제 설명문제 바로가기2. 풀이 과정문제 해결의 흐름 처음에 문제 자체를 이해하는데 어려움이 있었다-! 자세히 살펴보니 입력된 주식가격(prices)이 언제까지 떨어지지 않는지 구해주면 되는 것이었다.이때, 주식 가격이 입력되는 간격은 1초이다. 입력된 가격 배열 prices를 순회하며 이전에 살펴봤던 값이랑 비교하였을 때 현재 값이 이전 값보다 더 작다면 이전 값의 가격이 하락한 것이기에 가격 하락 전까지의 기간을 배열에 저장해주자!4.에 해당하지 않는 값들은 Stack에 계속 쌓아준다.4.~5.의 과정이 끝난 이후 Stack에 있는 값들을 pop하며 배열에 저장한다.코드 #include #include #include using namespace std;vector solution(vector ..
1. 문제 설명문제 링크 : https://www.acmicpc.net/problem/31796부산대학교 2024 pnup div1 / div2 기출문제 2. 풀이 과정문제 해결의 흐름입력 받을 때 바이러스 위치들을 전부 queue에 저장하자bfs 구현 q_virus와 q_building, 둘 중 하나가 빌 때까지 bfs 탐색이 이루어진다.Tg의 시간동안 virus가 감염시키는 것이 building이 완전히 감염되는 것보다 우선시되어야 한다. virus의 상하좌우에 building이 위치해 있다면 해당 building은 감염되었기에 q_building에 push해주자virus의 상하좌우에 안전지역이 위치해 있다면 해당 안전지역은 감염되어 virus가 되었기에 q_viurs에 push해주자q_buildin..
1. 문제 설명링크 : https://www.acmicpc.net/problem/317962. 풀이 과정문제 해결의 흐름 입력 받은 N개의 책 가격들을 오름차순으로 정렬하자. 책 가격들이 저장된 vector를 탐색하며 제일 값싼 책을 기준으로 2배 이상의 가격이 있다면 페이지를 늘리고 그 가격을 제일 값싼 책으로 갱신한다. 나의 코드#include#include #include using namespace std;int main() { // 입력 받기 int N; cin >> N; vector bookPrice; for (int i = 0; i > price; bookPrice.push_back(price); } // 정렬 sort(bookPrice..
1. 문제 설명링크 : https://www.acmicpc.net/problem/317972. 풀이 과정문제 해결의 흐름 아파트 층 수를 (참가자의 수 * 2)로 나눠주자! 참가자는 손이 두 개고 (참가자의 수 * 2)로 나눠준 나머지가 실질적인 아파트 층 수라고 봐도 무방하다. 만약 (참가자의 수 * 2)로 나눈 나머지가 0이라면 아파트 층 수는 (참가자의 수 * 2)이다. 반복문을 돌며 아파트 층 수번째 층에 있는 손바닥의 주인을 찾는다. 나의 코드 #include #define MAX 10001using namespace std;int arrApartment[MAX] = {}; // 0으로 초기화int main() { // 입력 받기 int N, M; // N : 아파트 층 수 , M :..
1. 문제 설명링크 : https://www.acmicpc.net/problem/317892. 풀이 과정문제 해결의 흐름후안의 돈으로 들고 있는 무기보다 큰 공격력의 무기를 살 수 있다면 모험을 떠날 수 있다. 나의 코드 #include #define MAX 101using namespace std;int N; // 무기의 수int X, S; // X : 돈, S : 후안의 공격력int weaponPower, weaponPrice;int main() { cin >> N; cin >> X >> S; bool result = false; for (int i = 0; i > weaponPrice >> weaponPower; if (weaponPrice S) { ..
1. 문제 설명링크 : https://www.acmicpc.net/problem/94662. 풀이 과정문제 해결의 흐름 백준 '2668 숫자고르기'와 비슷하다고 생각했는데 많이 다른 거 같다 ㅠㅠ...이 문제의 키포인트는 '사이클을 완성할 때까지 탐색하다가 사이클을 이루는 요소들 골라주기'이다. 사이클을 완성시키는 경우는 어떤 것이 있을까? 예를 들어 아래의 경우 1 -> 4 -> 7 -> 6 -> 4 와 같이 사이클을 형성한다. 1로 시작해서 4로 끝났는데 뭔 사이클이냐?라고 생각할 수도 있다. 하지만 4 -> 7 -> 6 -> 4의 사이클을 이룬다! 따라서 이와 같이 사이클을 이루는 경우 탐색을 멈추고 사이클을 이루는 숫자들을 백트래킹해주자! 12345674137346 나의 코드 #include #..
1. 문제 설명링크 : https://www.acmicpc.net/problem/19872. 풀이 과정문제 해결의 흐름 좌측 상단에서부터 시작해서 상하좌우로 탐색하며 이동할 수 있는 최대 칸 수를 구해야하는 문제이다.dfs를 이용해 최대 칸 수를 완전 탐색으로 구해보자.이때, 알파벳 개수는 26개이므로 26개의 인덱스를 갖는 int형 배열을 통해 방문처리해주자.나의 코드 #include using namespace std;int dr[4] = {0,0,1,-1};int dc[4] = {1,-1,0,0};int R, C;int result_cnt = 0;char alphabet_map[20][20]; // 대문자 알파벳들을 입력 받을 이차원 배열int visited[26] = {}; // 전부 0으로 초..