https://www.acmicpc.net/problem/14620 풀이arr은 입력 받은 값이고 sumArr은 자신의 좌표를 포함한 상하좌우의 총합을 저장하는 배열이다.이 문제는 배열을 전체 탐색하면서 모든 경우의 수를 고려해야 한다.dfs()에서 모든 좌표에 대해서 탐색을 돌면서 방문하지 않은 좌표에 대해서 재귀적으로 호출한다. 현재 좌표를 방문 처리하고 해당 좌표에 대해서 다시 탐색을 한다. 탐색이 종료되면 방문 기록을 지워서 모든 경우의 수를 고려할 수 있도록 한다. 참고로 x, y = 1 ~ N -1 까지 탐색하는 이유는 sumArr 배열의 모서리 부분은 모두 0이 저장되어 있기 때문에 탐색할 필요가 없다. 모서리 부분은 꽃을 심을 수 없는 영역이기 때문이다.코드import java.io.*;i..
https://www.acmicpc.net/problem/14889풀이처음에는 스타트 값을 더하기위해 인덱스를 저장한 배열, 링크를 위한 배열을 별도로 생성했다. 근데 도저히 코드로 어떻게 풀어나가야할지 떠오르지가 않아 다른 사람의 방법을 선택했다. visited 배열을 사용하여 true인 인덱스는 start에 더하고, false는 link에 더한다. dpeth가 N / 2일 때 계산을 하는 이유는 문제에서 설명하길 팀 인원은 N / 2명이라고 명시되어 있기 때문이다. calculate()에서 i의 범위를 N까지하면 j와 중복되는 인덱스가 발생하기 때문에 N - 1로 설정한다. N이 4일 때의 예시이다.i = 0j = 1, 2, 3i = 1j = 2, 3i = 2j = 3i = 3j = 3코드import..
https://www.acmicpc.net/problem/1038 코드언뜻 보면 쉬운 문제 같으나.... 완전 탐색으로 푸니까 시간 초과가 발생한다.알고리즘 분류로 브루트포스, 백트래킹이 적혀 있으므로 이를 이용해서 해결해야 한다.import java.io.*;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Main { static List list = new ArrayList(); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new In..
1. N과 M (1)https://www.acmicpc.net/problem/15649import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { static int n, m; static int[] arr; static boolean[] visited; static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws IOException { BufferedReader br..
https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #include #define MAX 9 using namespace std; int graph[MAX]; bool isBreak(int m) { for (int i = 0; i graph[i + 1]) { return true; } } return false; } void dfs(int depth, int n, int m) { if (de..