Algorithm/BOJ
-
https://www.acmicpc.net/problem/1325
(JAVA) [BOJ]백준 1325번, 효율적인 해킹https://www.acmicpc.net/problem/1325
2023.05.17 -
https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 2644, 촌수계산 [ 난이도 : 실버 2 ] 이번 문제도 BFS를 이용해서 푸는 문제이다. 직전에 풀었던 스타트 링크와 굉장히 유사한 풀이기에 참조하면 좋을 것 같다 ! https://seung-seok.tistory.com/60 (JAVA) [BOJ]백준 5014번, 스타트링크 https://www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄..
(JAVA) [BOJ]백준 2644번, 촌수계산https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 2644, 촌수계산 [ 난이도 : 실버 2 ] 이번 문제도 BFS를 이용해서 푸는 문제이다. 직전에 풀었던 스타트 링크와 굉장히 유사한 풀이기에 참조하면 좋을 것 같다 ! https://seung-seok.tistory.com/60 (JAVA) [BOJ]백준 5014번, 스타트링크 https://www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄..
2023.05.09 -
https://www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net 5014, 스타트링크 [ 난이도 : 실버 1 ] 이번 문제는 BFS(너비 우선 탐색)을 사용해서 풀어보겠다. 문제를 이해하는데 시간이 더 오래 걸린 문제이다 : )그치만 이해하면 쉽게 풀 수 있다 ! # Process input : 길게 쓰여진 문제를 풀이해보면 이렇다. 스타트링크는 총 F층 스타트링크가 있는 곳의 위치는 G층 강호가 지금 있는 곳은 S층 즉, 배열의 크기는 F 로 설정하고 시작 좌표는 S, ..
(JAVA) [BOJ]백준 5014번, 스타트링크https://www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net 5014, 스타트링크 [ 난이도 : 실버 1 ] 이번 문제는 BFS(너비 우선 탐색)을 사용해서 풀어보겠다. 문제를 이해하는데 시간이 더 오래 걸린 문제이다 : )그치만 이해하면 쉽게 풀 수 있다 ! # Process input : 길게 쓰여진 문제를 풀이해보면 이렇다. 스타트링크는 총 F층 스타트링크가 있는 곳의 위치는 G층 강호가 지금 있는 곳은 S층 즉, 배열의 크기는 F 로 설정하고 시작 좌표는 S, ..
2023.05.09 -
https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 2573, 빙산 [ 난이도 : 골드 4 ] 이번 문제는 BFS & DFS, 그래프 이론을 사용해서 풀어보겠다. # Process input : 입력받은 값들을 기반으로 area 배열에 값을 넣어주는 것으로 시작한다. static void input() { N = scan.nextInt(); M = scan.nextInt(); area = new int[N][M]; for(int i=0;i
(JAVA) [BOJ]백준 2573번, 빙산https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 2573, 빙산 [ 난이도 : 골드 4 ] 이번 문제는 BFS & DFS, 그래프 이론을 사용해서 풀어보겠다. # Process input : 입력받은 값들을 기반으로 area 배열에 값을 넣어주는 것으로 시작한다. static void input() { N = scan.nextInt(); M = scan.nextInt(); area = new int[N][M]; for(int i=0;i
2023.05.09 -
https://www.acmicpc.net/problem/18404 18404번: 현명한 나이트 첫째 줄에 N과 M이 공백을 기준으로 구분되어 자연수로 주어진다. (1 ≤ N ≤ 500, 1 ≤ M ≤ 1,000) 둘째 줄에 나이트의 위치 (X, Y)를 의미하는 X와 Y가 공백을 기준으로 구분되어 자연수로 주어진다. ( www.acmicpc.net 18404, 현명한 나이트 [ 난이도 : 실버 1 ] 이번 문제는 BFS 를 사용해서 풀어보겠다. BOJ [7562] 나이트의 이동과 굉장히 유사한 문제이기 때문에 참조하면 좋을 것 같다. https://seung-seok.tistory.com/57 (JAVA) [BOJ]백준 7562번, 나이트의 이동 https://www.acmicpc.net/problem/..
(JAVA) [BOJ]백준 18404번, 현명한 나이트https://www.acmicpc.net/problem/18404 18404번: 현명한 나이트 첫째 줄에 N과 M이 공백을 기준으로 구분되어 자연수로 주어진다. (1 ≤ N ≤ 500, 1 ≤ M ≤ 1,000) 둘째 줄에 나이트의 위치 (X, Y)를 의미하는 X와 Y가 공백을 기준으로 구분되어 자연수로 주어진다. ( www.acmicpc.net 18404, 현명한 나이트 [ 난이도 : 실버 1 ] 이번 문제는 BFS 를 사용해서 풀어보겠다. BOJ [7562] 나이트의 이동과 굉장히 유사한 문제이기 때문에 참조하면 좋을 것 같다. https://seung-seok.tistory.com/57 (JAVA) [BOJ]백준 7562번, 나이트의 이동 https://www.acmicpc.net/problem/..
2023.05.06 -
https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 7562, 나이트의 이동 [ 난이도 : 실버 1 ] 이번 문제는 체스말의 이동횟수를 측정해야 하므로 BFS (너비 우선 탐색)를 사용해서 풀어보겠다. # Process input : 테스트 케이스 횟수 T를 입력받고, 체스판의 크기를 입력 받는다. 체스판의 크기를 기반으로 dist를 생성해주고 시작좌표화 목적좌표를 입력받는다. 여기서 dist[i][j] 는 (i,j) 까지 최소 이동횟수를 입력할 것..
(JAVA) [BOJ]백준 7562번, 나이트의 이동https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 7562, 나이트의 이동 [ 난이도 : 실버 1 ] 이번 문제는 체스말의 이동횟수를 측정해야 하므로 BFS (너비 우선 탐색)를 사용해서 풀어보겠다. # Process input : 테스트 케이스 횟수 T를 입력받고, 체스판의 크기를 입력 받는다. 체스판의 크기를 기반으로 dist를 생성해주고 시작좌표화 목적좌표를 입력받는다. 여기서 dist[i][j] 는 (i,j) 까지 최소 이동횟수를 입력할 것..
2023.05.06 -
https://www.acmicpc.net/problem/3184 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 3184, 양 [ 난이도 : 실버 1 ] 이번 문제는 그래프 탐색과 BFS & DFS를 사용해서 풀어보겠다. 우선적으로 DFS 를 사용해서 풀어보겠다. # Process main : R 과 C 기반으로 전체좌표를 String[][] 의 area 라는 변수에 담아주고 방문 여부를 체크할 visit 을 생성해준다. static void input() { R = scan.nextInt()..
(JAVA) [BOJ]백준 3184번, 양https://www.acmicpc.net/problem/3184 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 3184, 양 [ 난이도 : 실버 1 ] 이번 문제는 그래프 탐색과 BFS & DFS를 사용해서 풀어보겠다. 우선적으로 DFS 를 사용해서 풀어보겠다. # Process main : R 과 C 기반으로 전체좌표를 String[][] 의 area 라는 변수에 담아주고 방문 여부를 체크할 visit 을 생성해준다. static void input() { R = scan.nextInt()..
2023.05.06 -
https://www.acmicpc.net/problem/4963 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 4963, 섬의 개수 이번 문제는 깊이 우선 탐색을 사용해서 풀어보겠다. # Process input : 섬의 넓이를 입력받으면 int 형 2차원 배열로 생성해준다. static void input() { W = scan.nextInt(); H = scan.nextInt(); area = new int[H][W]; visit = new boolean[H][W]; for(int i=0..
(JAVA) [BOJ]백준 4963번, 섬의 개수https://www.acmicpc.net/problem/4963 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 4963, 섬의 개수 이번 문제는 깊이 우선 탐색을 사용해서 풀어보겠다. # Process input : 섬의 넓이를 입력받으면 int 형 2차원 배열로 생성해준다. static void input() { W = scan.nextInt(); H = scan.nextInt(); area = new int[H][W]; visit = new boolean[H][W]; for(int i=0..
2023.05.05