반응형

백준 55

[백준] 9205 : 맥주 마시면서 걸어가기 (JAVA)

https://www.acmicpc.net/problem/9205[풀이과정]모든 편의점을 들려야 한다고 생각했다.편의점을 들리지 않고도 페스티벌에 도착할 수도 있으므로 갈 수 있는 최적의 경로를 찾는 방식으로 해결해야 했다.BFS를 통해서 갈 수 있는 경로를 탐색하며 페스티벌에 도착하면 happy를 출력했다. [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;/*상근이네(출발), 맥주 한 박스(20개), 50미터 당 한 병씩, 페스티벌(도착)맥주를 더 구매할 수도 있지만 소지할 수 있는 맥주는 최대 20병 */public class Main { st..

백준/DFS BFS 2024.09.13

[백준] 1245 : 농장관리 (JAVA)

https://www.acmicpc.net/problem/1245 [풀이과정]쉬운 문제인데 문제 이해를 이상하게 해서 엄청 헤맸다.DFS를 사용했고 모든 시작점을 산봉우리라고 가정한 후 탐색했다.시작점의 인접격자 중 시작점보다 값이 큰 곳이 있으면 산봉우리가 아니므로 isTop을 false로 바꿔주었고높이가 같은 곳이 있으면 같은 산봉우리로 취급되므로 dfs를 돌려주었다. [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;/* N*M의 농장. 산봉우리가 총 몇 개인지 세야 한다. 산봉우리는 같은 높이를 가지는 하나의 격자 혹은 인..

백준/DFS BFS 2024.09.13

[백준] 1504 : 특정한 최단 경로 (JAVA)

https://www.acmicpc.net/problem/1504[풀이과정]처음엔 모든 경우의 수를 탐색하며 V1, V2를 방문하는지 체크하는 방식으로 하려 했다. 하지만 이미 방문한 노드와 간선을 재방문할 수 있다는 부분에서 그렇게 진행하면 무한루프가 발생할 것 같아 방식을 바꾸었다.i ) 1부터 V1까지의 최단 거리 + V1부터부터 V2까지의 최단 거리 + V2부터 N까지의 최단 거리ii ) 1부터 V2까지의 최단 거리 + V2부터부터 V1까지의 최단 거리 + V1부터 N까지의 최단 거리 중 더 작은 값이 최단 경로이고만일 경로가 없다면 초기에 설정해둔 INF 값보다 큰 값이 도출되므로 -1을 반환하면 된다. [코드]import java.io.BufferedReader;import java.io.IO..

백준 2024.09.12

[백준] 4803 : 트리

https://www.acmicpc.net/problem/4803 [풀이과정]DFS 문제였다. 탐색을 하며 사이클이 존재하는지 여부를 체크하는 것이 중요.처음엔 이미 방문한 노드를 재방문했을 때 사이클이 발생한다고 했는데 여기서 오류가 생겼다.이미 방문한 노드 중엔 현재 주변을 탐색 중인 노드가 포함이었는데 이때는 제외했어야 했다. [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;import java.util.ArrayList;public class Main { static BufferedReader br = new Buf..

백준/DFS BFS 2024.09.06

[백준] 11404 : 플로이드

https://www.acmicpc.net/problem/11404 [문제풀이]플로이드 워셜 알고리즘 문제였다.플로이드 워셜 알고리즘이란 모든 정점에서 모든 정점까지의 최단 거리를 구하는 것으로,초기 그래프를 행과 열이 같은 곳을 제외하고 매우 큰 값으로 저장하여 최솟값으로 갱신하며 최단 거리를 찾는 알고리즘이다. 출력 할 때 INF으로 남은 값을 0으로 초기화해주어야 했는데 그 부분을 놓쳤다. 좀 더 꼼꼼하게 풀자!  [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;/*n개의 도시.한 도시에서 출발하여 다른 도시에 도착하는 m..

백준/그래프 2024.09.04

[백준] 1806 : 부분합

https://www.acmicpc.net/problem/1806 [문제풀이]처음엔 왼쪽 포인터와 오른쪽 포인터가 가리키는 두 수 중 더 작은 수를 빼주며 최소길이를 구하려고 했다.하지만 S 이상의 부분합을 전부 볼 수 없다는 문제점이 있었다.그래서 왼쪽과 오른쪽 포인터를 0에서 시작하여 오른쪽만 움직이다가 부분합이 S 이상이 되면 왼쪽 포인터가 가리키는 값을 빼준 왼쪽 포인터를 오른쪽으로 한 칸 옮기는 방식을 구현하였다. [정답]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;/*10,000 이하의 자연수로 이루어진 길이 N짜리 수열..

백준/투포인터 2024.09.03

[백준] 30023 : 전구 상태 바꾸기

https://www.acmicpc.net/problem/30023 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;/*N개의 전구가 일렬로 세워져 빨, 초, 파 중 하나의 색으로 빛나고 있음.연속한 세 전구를 선택하여 상태를 바꿀 수 있음.빨 -> 초, 초 -> 파, 파 -> 빨모든 전구가 같은 색으로 빛나게 하려면 이 과정을 최소 몇 번 수행해야 하는지 구해라. */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));..

백준/구현 2024.09.02

[백준] 14499 : 주사위 굴리기

https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net package com.ssafy.algoStudy.BJ; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; /*..

백준/구현 2023.09.08

[백준] 12945 : 재미있는 박스 정리

12945번: 재미있는 박스 정리 (acmicpc.net) 12945번: 재미있는 박스 정리 민호는 N개의 박스를 가지고 있다. 어느 날 박스가 너무 많아져 박스를 정리하고 싶어졌다. 하지만 평범한 박스정리가 너무 지루하다고 생각한 민호는 재미를 위해 몇 가지 규칙을 정하고 박스 www.acmicpc.net 상자는 무조건 큰 상자가 작은 상자의 크기의 2배 이상이어야 하므로 그 이하를 탐색하는 것은 무의미하다. 그래서 배열을 사용하여 1. 전체를 오름차순으로 정렬한 후 2. 작은 상자는 0번 인덱스, 큰 상자는 전체(N) / 2 번 인덱스를 탐색 시작점으로 잡는다. 3. 탐색 중인 두 상자가 결합이 가능하다면 쌍의 개수++ 해준 후 두 개 모두의 인덱스를 옮겨준다. 4. 결합이 불가능하다면 (큰 상자의 ..

백준/이분탐색 2023.09.06

[백준] 1697 : 숨바꼭질

https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 숨바꼭질 3에서 순간이동도 시간을 적용시켜주면 되는 문제였다. 내 코드 메모리 : 18436 KB 시간 : 164 ms 코드길이 : 1488 B import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import ja..

백준/DFS BFS 2023.04.21
반응형