목록Problem Solving/Baekjoon Online Judge (41)
프로그래밍 공부
https://www.acmicpc.net/problem/1303 해결 아이디어각 영역의 크기를 카운트 한 다음 제곱을 한 이후 더해줌B영역 한번 W영역 한번씩 계산 #include #include #include using namespace std;int dx[] = {0, 1, 0, -1};int dy[] = {1, 0, -1, 0};int solve(const int M, const int N, char target, vector>& board, vector>& vis){ int calc = 0; for (int i = 0; i > q; int power_cnt = 1; q.push({i, j}); vis[i][j] = power..
https://www.acmicpc.net/problem/9205 해결 아이디어상근이의 집(시작점), 페스티벌(목적지), 중간에 위치한 편의점(경유지)의 위치가 주어진다이동할 때, 50m당 맥주 1병을 소비하며, 최대 20병(즉, 1000m) 거리까지 이동이 가능하다주어진 모든 위치 간의 이동 가능 여부를 판단하고, BFS를 통해 페스티벌까지 도달 가능한지 확인. 먼저 그래프 사이에 이동이 이동이 불가능하다고 판단되면 그래프에 값을 넣지 않음그 후 BFS를 진행해 정답을 찾아냄#include #include #include #include using namespace std;struct Location{ int x; int y;};int main(){ ios::sync_with_stdio..

https://www.acmicpc.net/problem/13301 해결 아이디어그림을 보다보면 규칙이 보여서 규칙을 찾아서 해결 했다. dp식을 세울 수 있는 방법은 2가지가 있다 dp[n] * 4 + dp[n-1] * 2로 세우거나 dp[n] * 3 + dp[n - 1] * 3 + dp[n - 2] 이런식으로 계산 하는 방법도 있다. import java.io.*;public class _13301 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw ..

https://www.acmicpc.net/problem/1003 해결 아이디어1학년 시절 아무것도 모르고 깡으로 풀었다가 틀린 전적이 있어서 다른 알고리즘을 사용해야 시간내에 해결 할 수 있다는 것을 알게되어서DP를 사용하면 해결 할 수 있을것으로 판단했다.문제가 0과 1의 개수를 구하는 것이고 피보나치수는 이전 값을 가지고 다음 값을 계산 하는 것이기 때문에 n이 0일때와 n이 1일때 수를 알고 있으면 이 값을 바탕으로 나머지 값도 모두 구할 수 있다. dp[x][y]에서 x는 n값 y = 0은 0의 개수 y = 1은 1의 개수이다.import java.io.*;public class Main { public static void main(String[] args) throws IOExcepti..
https://www.acmicpc.net/problem/1967 해결 아이디어먼저 정점 노드에서 dfs를 진행해서 가장 먼 노드를 찾은 후 가장 먼 노드에서 dfs 를 진행 #include#includeusing namespace std;// 트리를 인접 리스트 형태로 표현하기 위한 자료구조vector>> tree;// 방문 여부를 체크하는 배열vector visited; // DFS 함수: 현재 노드에서 다른 노드들까지의 거리를 계산void dfs(int cur, vector& dist) { int len = tree[cur].size(); // 현재 노드의 자식 노드 개수 for (int i = 0; i dist(tree.size(), 0); // 노드 간의 거리를 저장하는 배열..
https://www.acmicpc.net/problem/15655 해결 아이디어조건에 맞게 백트래킹식을 작성하였다값을 중간중간 저장해주고 cnt가 m이 되면 값을 찾은것이니 출력 import java.util.*;import java.io.*;public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); public static int n, m; // n: 수의 개수, m: 조합의 크기 public static int[..