본문 바로가기

백준 문제 풀이70

(#11724 Java) 연결 요소의 개수 문제 좀 잘 읽자...!! N이 1부터인데, 이번에도 습관처럼 계속 반복문의 범위를 for (int i = 0; i < N; i++) { } 이렇게 해서 계속 틀렸다...ㅎ 정신차렷~~~~!! 문제 해결 역시나 static 변수로 설정할 것들 먼저 선언해주자! static int N,M; static int[][] Graph; static boolean[] Visited; static int count; dfs 함수이다. N 범위 주의!!!!! public static void dfs(int node) { Visited[node] = true; for (int i = 1; i < N+1; i++) { //N이 1부터이므로 범위 설정 주의!! if(!Visited[i] && Graph[node][i] ==.. 2024. 3. 4.
(#1012 Java) 유기농 배추 문제 해결 dfs 문제로 풀 수 있는 문제이다. static으로 main 밖에서 선언할 것들을 선언해준다. static int T; static int M,N,K; static int[][] Graph; static boolean[][] Visited; //방문 여부 static int count; static int[] dx = {0, -1, 0, 1}; //좌우 static int[] dy = {-1, 0, 1, 0}; //상하 dfs 함수를 만들어준다. 배추흰지렁이는 상하좌우로 모두 움직일 수 있으므로 반복문의 범위를 4번 반복하도록 설정해준다. 각각 행/열의 새로운 좌표를 만들어준 후, 새로운 좌표의 범위 체크, 방문여부 체크, 1인지 아닌지 체크 (배추가 위치해있는 곳)를 한 후 모든 검증이 끝.. 2024. 3. 4.
(#2606 Java) 바이러스 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 진짜 짜증나 죽는 줄 알았다... 분명 내 로컬에서는 답이 잘 나오는데, 왜 계속 이러는 거지 했는데, 진짜 어이없는 실수였던 것,,, i가 곧 node 번호인 걸 잊고 그냥 습관처럼 0부터 했다가 난 실패 메세지였다. 1번부터 방문하기 때문에 1부터 넣어주어야 한다.. 문제 해결 이것도 DFS/BFS 두 가지 방법으로 풀 수 있는데 나는 DFS에서 재귀 방법을 선택했다. DFS/BFS 문제를 풀기 위해 필요한 것들을 세팅해주자. 최종적으로 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력해주어야 하므로 추가로 count 변수도 만들어주자. static int N, E; //컴퓨터 수, 연결된 선의 개수 static int[][] Graph; static boolean[] Visited;.. 2024. 2. 29.
(#1260 Java) DFS와 BFS 문제 해결 그냥 대놓고 BFS와 DFS를 구하라고 하는 문제이다. 그냥 전형적인 방식으로 수월하게 코드를 작성하고 있었는데, 생각보다 꽤 많은 문제에 부딪혔다. 우선 Gragh와 Visited 배열을 main함수 밖에 크기까지 선언해서 계속 범위 오류가 났다. 이 부분을 주의해서 코드를 보면 좋을 것 같다. 또한, 원래 dfs를 구현할 때 재귀를 이용하는 게 훨씬 쉽지만, 이번에는 스택을 이용했다가, 문제에서 요구하는 작은 번호의 정점을 먼저 방문하는 조건을 충족하지 못 해 그냥 추가적인 코드를 짜지 않고 재귀를 이용하는 코드로 바꿨다...ㅎ 먼저 크기를 정하지 않고 static으로 main 함수 밖에 변수들을 선언해준다. static final int Max_N = 1000; static int N, .. 2024. 2. 29.
(#16173 Java) 점프왕 쩰리 (Small) 전형적인 dfs 코드이다. DFS/BFS 문제가 코테에서 가장 많이 나오는 문제 유형이라고 한다. 아직 문제를 풀어본 경험이 없어 문제를 풀기 전 유튜브에서 문제 유형들과 기본적인 기초들을 공부했는데, 기본적인 틀은 정해져있는 것 같았다. 문제를 보고 어떻게 구상해야할지 연습이 많이 필요할 것 같다. 문제 해결 먼저 정사각형의 구역에서 젤리가 움직인다고 하니 칸 수를 입력받을 N과 2차원 배열, dfs에서 필수적인 boolean 타입의 방문여부 배열을 선언해준다. 또한 젤리가 오른쪽과 아래 방향으로만 움직일 수 있다고 했으니 이를 위한 좌표 값들을 만들어주자. static int N; static int[][] arr; static boolean[][] visited; //방문 여부 static int[.. 2024. 2. 28.
(#2903 Java) 중앙 이동 알고리즘 문제 이해 규칙을 찾는 게 어려웠던 문제이다. 한 변의 점의 개수가 2의 N제곱에서 1을 더한 값이 되고, 총 점의 개수는 한 변의 점의 개수의 거듭 제곱이 된다. 문제 해결 먼저 N을 입력 받는다. Scanner in = new Scanner(System.in); int N = in.nextInt(); 입력받은 N을 이용하여 2의 거듭제곱에 1을 더한 값을 계산하고, 그 값을 제곱하여 최종 result 변수에 담아 출력하면 된다. 이 때 Math.pow 메서드의 반환 타입이 double이기 때문에 int형으로 형변환을 해주었다. int result = ((int) Math.pow(Math.pow(2, N) + 1, 2)); System.out.println(result); 참고로 제곱을 구하는 Math.. 2024. 2. 27.
반응형