Algorithm (PS)63 [백준] 15661 (Java) [완전탐색] 문제 https://www.acmicpc.net/problem/15661 15661번: 링크와 스타트 첫째 줄에 N(4 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에 S가 주어진다. 각 줄은 N개의 수로 이루어져 있고, i번 줄의 j번째 수는 Sij 이다. Sii는 항상 0이고, 나머지 Sij는 1보다 크거나 같고, 100 www.acmicpc.net 알고리즘 완전탐색 (브루트포스) 풀이 먼저 메인함수에서 for문을 통해 최소1명부터~N명까지 pick을 하고 재귀를 통해 그에 맞게 팀을 start와 link로 구분하면 되는 문제였다. 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import j.. 2023. 7. 14. [백준] 2178. 미로탐색 (Java) [BFS 최단거리) 문제 https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 알고리즘 BFS 최단거리 풀이 BFS를 통해 4방향 탐색을 하며 최단거리를 구하는 문제다. 단 벽이 있는 경우, 이미 방문한 좌표, 맵 밖을 벗어나는 경우를 주의하며 이동을 해야한다. 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.L.. 2023. 7. 11. [백준] 1260. DFS와 BFS (Java) 문제 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 알고리즘 DFS, BFS 풀이 그래프 간의 연결 관계를 인접리스트로 설정해주고, 정점 작은 것을 먼저 방문해줘야 하기 때문에 정렬을 해줬다. 그리고 DFS, BFS를 통해 탐색을 진행시켰다. 인접리스트를 이용한 풀이, 배열을 사용한 풀이 2가지로 풀어보았다. 코드 [인접리스트를 이용한 풀이] package com.company; import java.io.. 2023. 7. 10. [백준] 10816. 숫자 카드2 (Java) [lower_bound, upper_bound] 문제 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0 www.acmicpc.net 알고리즘 이분탐색(lower_bound, upper_bound) 풀이 이분탐색 개념의 lower_bound와 upper_bound의 개념을 알고 있는지를 확인하는 문제였다. 정렬을 시켜주고 타겟 숫자보다 큰 숫자가 나타나는 인덱스를 구하고(upper_bound) 타겟 숫자가 처음으로 진입하는 나타나는 인덱스를 구한다.(lower_bound) 그리고 uppe.. 2023. 7. 8. [백준] 2805. 수들의합 (Java) [이분탐색] 문제 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 알고리즘 이분탐색 코드 package com.company; import java.io.*; import java.util.ArrayList; import java.util.StringTokenizer; public class Test_BinarySearch2 { static int N, M; static int MAX = 1000000000; stat.. 2023. 7. 8. [백준] 1789. 수들의합 (Java) [이분탐색] 문제 https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 알고리즘 이분탐색 + 수학 풀이 N까지의 합의 공식과 이분탐색을 이용해서 풀이를 했다. left+ right/2, 즉, 중간 값을 구해서 S를 찾아가는 과정이며 자세한 건 풀이를 보자. 코드 package com.company; import java.io.*; public class Test_BinarySearch { static long MAX = 4294967295L; static long ans = 0; public static void main(String args[]) throws IOExceptio.. 2023. 7. 8. 이전 1 ··· 7 8 9 10 11 다음