목록분류 전체보기 (384)
hwooo

https://leetcode.com/problems/is-graph-bipartite/description/ 풀이아직 방문하지 않은 노드에 대해 방문하여 bfs로 연결된 노드들을 모두 확인한다.이 때 다음에 방문하는 노드들은 현재 노드와 다른 그룹으로 묶는다. 현재 그룹이 A라면 B로, B라면 A로 묶는다.묶던 중 현재 노드와 다음 노드가 같은 그룹으로 묶인다면 이분 그래프가 아니므로 false를 반환한다.C/C++ 코드#define A 1#define B 2class Solution {public: int group[101]; bool bfs(vector>& graph, int now) { queue q; q.push(now); group[now] = ..

https://www.acmicpc.net/problem/1647풀이크루스칼 알고리즘을 이용했다.대신 마지막에 연결되는 간선을 제외해 두 마을로 나누면서 가장 큰 연결 간선을 제외한다.C/C++ 코드#include #include #include #include #include using namespace std;int N, M;vector parents;int lineCount = 0;int totalCost = 0;void unionNodes(int a, int b) { parents[b] = a;}int find(int a) { if (a == parents[a]) { return a; } return parents[a] = find(parents[a]);}int ..

https://leetcode.com/problems/bulls-and-cows/description/풀이주어진 문자열을 탐색하며 bulls를 찾는다. 이 때 bulls 위치를 기록하며 아닌 자리의 숫자들의 개수를 센다.한 번 더 탐색하며 bulls 자리는 넘어가고, secret에 있는 숫자이면 해당 숫자의 개수를 줄여주며 cows의 개수를 파악한다.C/C++ 코드class Solution {public: string getHint(string secret, string guess) { int A = 0, B = 0; bool bulls[1000]; int cnt[10] = {0, }; for (int i = 0; i 0) { ..

https://school.programmers.co.kr/learn/courses/30/lessons/68936 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이주어진 배열을 탐색하다가 셀 내에 모든 값이 같지 않다면 현재 배열을 4등분한다.이 때 나눠진 배열의 크기와 시작 좌표를 같이 넘겨 작은 단위의 배열을 탐색하며, 이를 재귀로 반복한다.만약 모든 값이 같다면 현재 셀의 공통적인 값의 개수를 증가시킨다.C/C++ 코드#include #include using namespace std;vector answer(2, 0);void compress(vector>& arr, int sr, int sc..

https://www.acmicpc.net/problem/10159 풀이처음엔 dfs로 연결된 노드들을 탐색하려 했으나, 같은 루프에 있는 값인지를 확인하기 어려워 답을 봤다.플로이드-워셜을 모든 노드 간의 관계를 조회하도록 하는 방법을 사용했는데 떠올리지 못 했다. 풀이 참고https://loosie.tistory.com/264 [BOJ] 백준 10159번 저울 (Java)#10159 저울 난이도 : 골드 3 유형 : 그래프/ 플로이드-와샬 10159번: 저울 첫 줄에는 물건의 개수 N 이 주어지고, 둘째 줄에는 미리 측정된 물건 쌍의 개수 M이 주어진다. 단, 5 ≤ N ≤ 100 이고, 0 ≤ Mloosie.tistory.com C/C++ 코드#include #include #include usin..

https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이처음에는 amount 값을 한 번에 정리하고, 구조도의 제일 밑 부분부터 확인하며 income 값을 갱신해줬다.그렇게 하니까 답이 나오지 않아 힌트를 봤고, 10씩 10번을 팔았을 때의 값을 10번 처리해주는 것과 100을 한 번에 처리해주는 것이 다른 결과값이 나오는 것을 알았고, 코드를 수정했다. 먼저 String 값을 인덱스로 사용하기 위해 map으로 설정했다. 한 번 팔 때부터 순회하며 해당 셀러가 소개받은 사람과 수익을 나눈다. 소..

https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이문제에 주어진 방법대로 풀면 답을 구할 수 있다.C/C++ 코드#include #include using namespace std;bool checkCorrect(string u) { int openCnt = 0; for (int i = 0; i Java 코드import java.util.*;class Solution { public String solution(String p) { return getBalanc..

https://leetcode.com/problems/path-with-maximum-gold/description/ 풀이주어진 배열의 최대 사이즈가 15 * 15이므로 금이 있는 모든 구역을 탐색하며 최대로 얻을 수 있는 금의 양을 찾는다.이 때 dfs로 탐색하며, 반환값을 [현재 구역의 금 양 + 탐색한 구역들에서 최대로 얻을 수 있는 금의 양] 으로 설정하여 탐색한 경로에서의 최대 양을 찾아 반환한다.C/C++ 코드class Solution {public: int mv[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; int getMaximumGold(vector>& grid) { int maxValue = 0; for (int i =..