[프로그래머스] 단어 변환(C++)
·
개발/알고리즘
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 코드 구현#include #include #include #include using namespace std;bool IsNeighbor(const string& a, const string& b){ // 두 단어를 비교하여 하나만 단어가 다른 경우를 찾음 int diff = 0; for (int i = 0; i 1) return false; } return true;}int solution(string begin..
[백준] 7576번: 토마토(C++)
·
개발/알고리즘
문제 링크https://www.acmicpc.net/problem/7576 코드 구현#include #include #include #include using namespace std;vector> box;int days[1000][1000];queue> q;vector> dir = { {0, -1}, {0, 1}, {-1, 0}, {1, 0} };bool IsValid(int x, int y){ if (x >= 0 && x = 0 && y now = q.front(); q.pop(); for (int i = 0; i > m >> n; box.resize(n); for (int i = 0; i > t; box[i].push_back(t); // 처음부터 익어있는 토마토 큐에 삽입 if ..
[백준] 1967번: 트리의 지름(C++)
·
개발/알고리즘
문제 링크https://www.acmicpc.net/problem/1967 코드 구현#include #include #include using namespace std;vector>> tree;vector visited;int maxDist = 0, farNode = 0;void dfs(int node, int dist){ visited[node] = true; if (dist >= maxDist) { maxDist = dist; farNode = node; } for (const pair pair : tree[node]) { int neighbor = pair.first; int weight = pair.second; if (!visited[neighbor]) { dfs(neighbor..
[프로그래머스] 가장 먼 노드(C++)
·
개발/알고리즘
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 코드 구현#include #include #include #include using namespace std;vector> graph;vector visited;queue q;void bfs(int start){ visited[start] = 1; q.push(1); while (!q.empty()) { int now = q.front(); q.pop(); for (int n..
[프로그래머스] 길 찾기 게임(C++)
·
개발/알고리즘
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/42892 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 코드 구현#include #include #include using namespace std;// 노드 정의struct Node{ int id, x, y; Node* left = nullptr; Node* right = nullptr; Node(int _id, int _x, int _y) : id(_id) , x(_x) , y(_y) {}};// 이진 트리 정의class..
[백준] 회의실 배정(C++)
·
개발/알고리즘
문제링크https://www.acmicpc.net/problem/1931 코드 구현#include #include #include using namespace std;int main(){ int N; cin >> N; vector> meetings(N); for (int i = 0; i > meetings[i].first >> meetings[i].second; } // 끝나는 시간 기준 오름차순 정렬 sort(meetings.begin(), meetings.end() , [](pair& a, pair& b){ if (a.second == b.second) return a.first = last_end_time) { ..
[백준] 평범한 배낭( C++)
·
개발/알고리즘
문제 링크https://www.acmicpc.net/problem/12865 코드 구현#include #include #include using namespace std;int main(){ int N, K; cin >> N >> K; // dp[w] = 무게가 w일 때의 최대 가치 vector dp(K + 1, 0); for (int i = 0; i > weight >> value; for (int w = K; w >= weight; --w) { // 넣지 않는 경우 / 넣는 경우 dp[w] = max(dp[w], dp[w - weight] + value); } } cout 해결 방법동적 해결법 dp 배열을 사용하여 최대 무게 K에서의 최대 가치를 배열에 저장하였다. 입력 받은 아이템..
[프로그래머스] n개의 최소공배수(C++)
·
개발/알고리즘
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 코드 구현#include #include #include using namespace std;bool isValid(const vector& arr, int num){ for (int i = 0; i arr){ int answer = 0; int max = 0; for (int i = 0; i = max) max = arr[i]; } int i = 1; while (true) { ..
[프로그래머스] 전력망을 둘로 나누기(C++)
·
개발/알고리즘
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 코드 구현#include #include #include #include using namespace std;vector> tree;vector visited;int nodeCount = 0;void dfs(int node){ nodeCount++; for (const auto& neighbor : tree[node]) { if (!visited[neighbor]) { vi..
[백준] 노드사이의 거리(C++)
·
개발/알고리즘
문제 링크https://www.acmicpc.net/problem/1240 코드 구현#include #include #include using namespace std;vector visited;int answer = 0;void dfs(int _node, int _end, int _dist, const vector>& tree){ if (_node == _end) { answer += _dist; return; } for (int i = 0; i > N >> M; vector> tree(N, vector(N)); visited.resize(N); for (int i = 0; i > node1 >> node2 >> dist; tree[node1 - 1][node2 - 1] = dist; tree..
[백준] RGB거리(C++)
·
개발/알고리즘
문제 링크https://www.acmicpc.net/problem/1149 코드 구현#include #include #include #include using namespace std;int main(){ int n; cin >> n; vector> rgbCost(n, vector(3)); vector> curCost(n, vector(3)); for (int i = 0; i > rgbCost[i][j]; } } curCost[0][0] = rgbCost[0][0]; curCost[0][1] = rgbCost[0][1]; curCost[0][2] = rgbCost[0][2]; for (int i = 1; i 해결 방법현재까지의 총 비..
[백준] 스타트와 링크(C++)
·
개발/알고리즘
문제 링크https://www.acmicpc.net/problem/14889 코드 구현#include #include using namespace std;vector> Stats;int minValue = 100;bool selected[20];int Diff(){ int diff; int S = 0, L = 0; // selected 에서 true 면 스타트 팀, false 면 링크 팀 for (int i = 0; i 0) ? diff : -diff; return diff;}// idx : 현재 팀원, count : 팀원 수void Backtrack(int idx, int count){ // 팀원 수는 전체 인원의 절반 if (count == Stats.size() / 2) { // 팀이 만들어졌..
[프로그래머스] 하노이의 탑(C++)
·
개발/알고리즘
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/12946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 코드 풀이#include #include #include using namespace std;vector> answer;// 원판 개수, 시작 기둥, 보조 기둥, 목적지 기둥void Hanoi(int n, int start, int via, int dest){ if (n == 1) { answer.push_back({ start, dest }); return; } Hanoi(n -..
[프로그래머스] 타겟 넘버(C++)
·
개발/알고리즘
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 코드 구현#include #include #include using namespace std;int answer = 0;void dfs(const vector& numbers, int _Index, int _sum, const int& _target){ if (_Index == numbers.size()) { if (_sum == _target) answer++; return; } ..
[백준] 2606번: 바이러스(C++)
·
개발/알고리즘
문제 링크https://www.acmicpc.net/problem/2606 코드 구현#include #include #include #include using namespace std;unordered_map> adjList;unordered_set visited;void dfs(int node){ // 방문 체크 visited.insert(node); for (const int& neighbor : adjList[node]) { // 방문하지 않은 컴퓨터인 경우 dfs() 재귀 호출 if (visited.find(neighbor) == visited.end()) { dfs(neighbor); } }}int solution(int _computerCount, int _pairCount)..