alorithm/Baekjoon 30

[백준] 5014번: 스타트링크

https://www.acmicpc.net/problem/5014 문제 파악- 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. - 첫째 줄에 강호가 S층에서 G층으로 가기 위해 눌러야 하는 버튼의 수의 최솟값을 출력한다. 만약, 엘리베이터로 이동할 수 없을 때는 "use the stairs"를 출력한다.  -그래프 이론 -그래프 탐색 -너비 우선 탐색 접근 방법-최소시간을 구해 리턴해야 하므로 BFS접근을 사용-정수 배열을 담는 큐 자료형 사용-정수 배열에는 층x와 버튼을 누른 횟수가 담긴다.  코드 구현package com.baekjoon;public class p501..

alorithm/Baekjoon 2024.09.07

[백준] 1697번: 숨바꼭질

https://www.acmicpc.net/problem/1697   문제 파악- 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다.-그래프 이론 -그래프 탐색 -너비 우선 탐색 접근 방법-최소시간을 구해 리턴해야 하므로 BFS접근을 사용한다.-정수 배열을 담는 큐 자료형 사용-정수 배열에는 수빈이의 위치 x와 걸린 시간이 담긴다.  코드 구현package com.baekjoon;public class p1697_숨바꼭질 { public static int p1697_숨바꼭질() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(..

alorithm/Baekjoon 2024.09.06

[백준] 2648번 : 안전 영역

https://www.acmicpc.net/problem/2468    문제 파악-특정 강수량마다 잠기는 곳/안 잠기는 곳 구분하여 배열 저장- 안잠기는 곳을 '섬'이라 칭하자- dfs원리로 매 케이스의 섬을 카운트하여 가장 큰 카운트를 리턴 🎈[알고리즘 분류]그래프 이론브루트포스 알고리즘그래프 탐색너비 우선 탐색깊이 우선 탐색 접근 방법-BufferedReader와 StringTokenizer 이용해 값을 입력받기- BufferedReader는 처음에 선언하고 br.readLine()으로 받기- StringTokenizer는 한 줄단위로 쪼갤 때마다 선언..!, delimeter는 뒤에 적어주기, 실제 쪼갤 때는 st.nextToken() 사용-각 강수량마다 잠기는 지역/안잠기는 지역 비교문으로 fa..

alorithm/Baekjoon 2024.09.02

[백준] 바이러스 -재 풀이

https://www.acmicpc.net/problem/2606   문제 파악-컴퓨터가 이어져있으면 바이러스가 옮는다. 는 개념-저번에 파이썬으로 푼 문제 재풀이-한 네트워크에서 영향받는 컴퓨터 수 세는 것임 접근 방법-주어진 int끼리 연결하여 인접 리스트 먼저 만들고(양방향)해당 노드와 이어진 모든 노드 순회하며 카운트-visited와 count는 모두 멤버변수로 선언한다. 코드 구현import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.StringTokenizer;public class 바이러스 { static..

alorithm/Baekjoon 2024.08.13

[백준] 미로 탐색

https://www.acmicpc.net/problem/2178 문제 파악-BFS를 이용해 최소 거리 구하기-1은 이동 가능한 거리, 0은 이동 불가능한 거리  접근 방법-(1,1)이 시작점이지만 좌표 상 0,0이므로 고려해서 풀기  코드 구현import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main { static int answer=0; public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(..

alorithm/Baekjoon 2024.08.13

[백준] 2667번: 단지번호붙이기

https://www.acmicpc.net/problem/2667  문제 파악-네트워크 문제와 비슷하게, 연결 된 집을 갯수를 모두 카운트하고-한 단지가 끝나면 다른 단지도 순회한다.-N X N 크기 접근 방법-DFS로 탐색(재귀 탐색)-탐색 후 visited 체크(혹은 0으로 변경?)-재귀 호출 일어날 때마다 cnt증가, 종료될 때마다 cnt합산-다른 집 옮겨갈 때 dfs 사용한다. (dfs 한번 당 1)-결과값은 재귀호출 내에서 관리하는 것이 아니라매 dfs마다 새로운 변수를 만들어 타고타고 누적하며 그 값을 리턴하면 1씩 누적되는 형태(모아서 바치는 형태로 생각하자.)-DFS함수는 int형태를 리턴하고, 한 단지의 순회가 끝나면 모아모아 받은 결과값을 메인함수에서 저장 코드 구현import java..

alorithm/Baekjoon 2024.08.13

[백준] 2644번: 촌수계산

https://www.acmicpc.net/problem/2644   문제 파악-총 노드 갯수 n-특정 노드 a,b (a: start, b: target)-간선 m-~연결관계~ : 단방향(부모-자식 관계 명확)*StringTokenizer는 문자열 한 줄에서만 유효, 여러 줄일 시 새로운 st 선언해줘야 한다. *또한 띄어쓰기가 있는 문자열 쪼개는 데 쓴다.*br.readLine으로 받아서 해당 String.charAt()으로 받는 건 띄어쓰기가 없을 경우에 사용! 접근 방법-BFS함수 별도 작성-시작점a로부터 도착노드b까지 top-bottom이 명확한 그래프이지만, 위로 거슬러 올라가는 로직을 별도로 추가하여4방향 탐색하듯이 (경우 따져보고 전진), 가능하면 전진하여 카운트하고 아니면 그 다음 경우로 ..

alorithm/Baekjoon 2024.08.13

[Python/백준] 23791번 : ZOAC 4

[문제]2021년 12월, 네 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 오프라인 대회를 대비하여 강의실을 예약하려고 한다.강의실에서 대회를 치르려면 거리두기 수칙을 지켜야 한다!한 명씩 앉을 수 있는 테이블이 행마다 W개씩 H행에 걸쳐 있을 때, 모든 참가자는 세로로 N칸 또는 가로로 M칸 이상 비우고 앉아야 한다. 즉, 다른 모든 참가자와 세로줄 번호의 차가 N보다 크거나 가로줄 번호의 차가 M보다 큰 곳에만 앉을 수 있다.논문과 과제에 시달리는 성우를 위해 강의실이 거리두기 수칙을 지키면서 최대 몇 명을 수용할 수 있는지 구해보자.H, W, N, M이 공백으로 구분되어 주어진다. (0  H, W, N, M ≤ 50,000)강의실이 수용할 수 있는 최대 인원 수를 출력한다.-입력5 4 1 1-출력..

alorithm/Baekjoon 2024.06.17

[JAVA/백준] 2343번 : 기타 레슨

[문제] 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경우에는 강의의 흐름이 끊겨, 학생들이 대혼란에 빠질 수 있기 때문이다. 즉, i번 강의와 j번 강의를 같은 블루레이에 녹화하려면 i와 j 사이의 모든 강의도 같은 블루레이에 녹화해야 한다. 강토는 이 블루레이가 얼마나 팔릴지 아직 알 수 없기 때문에, 블루레이의 개수를 가급적 줄이려고 한다. 오랜 고민 끝에 강토는 M개의 블루레이에 모든 기타 강의 동영상을 녹화하기로 했다. 이때, 블루레이의 크기(녹화 가능한 길이)를 최소로 하려고 한다. 단, M개의 블루레이는 모두 같은 크기이어야 한다. 강토의 각 강의의 길이..

alorithm/Baekjoon 2023.11.08

[JAVA/백준] 1920번 : 수 찾기

[문제] N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. -입력 5 4 1 5 2 3 5 1 3 7 9 5 -출력 1 1 0 0 1 [풀이] package Baekjoon; import java.util...

alorithm/Baekjoon 2023.11.06