본문 바로가기

자바127

[백준] 공유기 설치 / 자바 문제         레벨: G4알고리즘: 이분탐색 풀이시간: 1시간힌트 참조 유무: 무https://www.acmicpc.net/problem/21101 번째 시도   만약, 이 문제를 풀이하기 전에 이분탐색에 대해 조금이나마 헷갈리는 부분이 있다면 필자가 풀이한 숫자카드 2 문제를 한 번 보고 오시는 것을 추천드린다.자카드 2 문제에서 다루었던 Upper Bound, Lower Bound 형식을 그대로 적용시키면서 최대한 코드 재사용성을 높이고자 같은 구조를 띄도록 노력하고 있다. import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;import java.util.StringTokenizer; i.. 2024. 5. 31.
[백준 15683] 감시 / 자바 / 브루트 포스(그래프 순회) 문제         레벨: G3알고리즘: 브루트 포스(그래프 순회)풀이시간:  1:30힌트 참조 유무: 무https://www.acmicpc.net/problem/156831 번째 시도: 실패   [알고리즘 선택 과정]각 cctv마다 방향 설정이 중요합니다그렇다면 각 cctv의 방향을 무슨 기준으로 놓아야 할까요주장: 각 CCTV마다 칸을 많이 차지하는 방향으로 반론: A가 칸이 많이 차지하는 방향, B가 칸이 많이 차지하는 방향으로 설정했는데 A,B가 겹치는 것이 많은 상황을 가장해보자.(주장 답안)0 0 #0 0 2(A)0 0 #0 0 2(B)0 0 #(정답 답안)0 0 0# # 2(A)0 0 0# # 2(B)0 0 0   그래서 이 주장은 옳지 않습니다. 패스그렇다면 완전탐색으로 각 CCTV의 모든.. 2024. 5. 30.
[백준] 최단경로 / 자바 문제         레벨: G4알고리즘: 다익스트라 풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/17531 번째 시도    [다익스트라 알고리즘에서 우선순위 큐를 쓰는 이유]최소거리 값 갱신 횟수의 감소때문이다. 먼저 우선순위 큐를 쓰지 않고 일반 큐를 써도 결과에는 차이가 없다. 하지만 우선순위 큐를 쓰는 이유는 속도에 이점이 있기 때문이다.import java.io.*;import java.util.*;class Node implements Comparable{ int end, weight; public Node(int end, int weight){ this.end = end; this.weight = weight;.. 2024. 5. 28.
[백준] 파티 / 자바 문제         레벨: G3알고리즘: BFS풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/1238 1 번째 시도: 실패   가중치가 있기 때문에 인접리스트 대신 인접행렬 선택갈 때 최단 거리를 구하는 dfs와 돌아올 때 최단 거리를 구하는 dfs2왜 굳이 dfs를 두개로 나누었나? 현 코드 dfs 리턴 값은 void로 답을 전역변수에 할당했다.효율적인건 리턴 값을 int로 하여 전역변수를 사용하지 않는 거다그러나 구현에 어려움이 있어 답을 전역변수에 할당하고 dfs를 2개로 나뉘었다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import .. 2024. 5. 27.
[백준] 아기상어 / 자바 문제         레벨: G3알고리즘: 풀이시간: 12:34힌트 참조 유무:https://www.acmicpc.net/problem/162361 번째 시도: 실패   [알고리즘 선택 사고 과정]먹을 수 있는 것들을 다 먹어야 함(배열 탐색)먹을 수 있는 것에서 갈 때에는 최소한의 거리로 가야 함 -> BFS 선택되게 간단히 알고리즘 선택했다 [풀이 과정]반복문상어가 먹을 수 있는 것을 찾을 때까지 탐색(BFS)한다.만약 먹을 것이 없다면 반복문을 종료하고 답을 반환한다.자세한 건 주석 참조  import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayDeque;i.. 2024. 5. 25.
[백준] 줄 세우기 / 자바 문제         레벨: G3알고리즘: 위상정렬 + 풀이시간:  1시간 힌트 참조 유무: 유https://www.acmicpc.net/problem/22521 번째 시도   가장 단순하게 구현을 하면 학생수만큼의 길이를 가진 배열을 만들고 문제에서 조건이 주어질 때마다 배열의 원소들의 위치를 바꿔주면 됩니다. 그러나 이렇게 하면 시간 복잡도에서 당연히 초과 판정을 받게 될 겁니다. 그렇기 때문에 알고리즘을 써야 하고 이때 사용할 수 있는 알고리즘은 위상 정렬(Topological Sort)이 있습니다. 위상 정렬(Topological Sort)은 그래프에서 선후관계 조건이 있을 때 이를 고려해서 노드의 순서를 정렬할 수 있습니다. (위상정렬은 순환그래프가 포함될 시 사용하지 못한다.) import ja.. 2024. 5. 24.
[백준] 2048(Easy) / 자바(feat 브루트 포스, 백트래킹, DFS 차이점) 문제         레벨: G2알고리즘: 브루트 포스풀이시간:  1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/121001 번째 시도   [사고 과정]이 게임의 규칙을 못 찾겠다.최대 N= 20 최대 탐색횟수 5번 4방향으로,  5*4*20*20 =8,000이므로 완전탐색이 가능할 것 같다.5번의 완전탐색으로 구현 자! 그렇다면 어느 것을 기준으로 다음 탐색지를 정해야 할까?각각의 숫자들을 타겟 or 방향각각의 숫자들을 기준에 맞추어 어느 숫자를 크게 만들까 생각한다면 다른 숫자들도 영향을 받기 때문에 머리가 너무 아프다당연히 4가지로만 나누어진 방향에 초점을 맞추는 게 맞다!(이번 기회를 통해 어는 것의 초점을 맞추어 다음 탐색지를 정할지 중요할 것을 알았다) [구현.. 2024. 5. 23.
[백준] 별 찍기 -10 / 자바 문제         레벨: G5알고리즘: 풀이시간: 1시간힌트 참조 유무: 무https://www.acmicpc.net/problem/24471 번째 시도   [풀이 사고 과정]처음 주어진 패턴으로 부분요소들을 크게 업데이트 해가는 문제구나 라는 생각즉, 재귀함수 문제라 생각풀이는 코드 주석 참조import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); .. 2024. 5. 23.
[백준 15686] 치킨배달/ 자바 / 브루트 포스(그래프순회) 문제         레벨: G5알고리즘: 브루트 포스(그래프순회) 풀이시간: 1시간 힌트 참조 유무: 유https://www.acmicpc.net/problem/15686 1 번째 시도: 실패   여느 BFS 문제랑 같다 생각하고 작성하였다import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashSet;import java.util.LinkedList;import java.util.Queue;import java.util.Set;//String[] s = br.readLine().split(" ");//Integer.parseInt(br.readLine());//i.. 2024. 5. 21.