BFS 6

백준 13549번 숨바꼭질 3 - 자바(Java)

문제 링크https://www.acmicpc.net/problem/13549 1. 문제n과 k가 주어지고 n을 k값으로 만들려고 할때 +1, -1 , *2를 할 수 있을때+1, -1은 cost가 1 들게 되지만*2는 비용이 들지 않는다. 이때 최소 비용으로 k를 만드는 문제였다. N(0 ≤ N ≤ 100,000) K(0 ≤ K ≤ 100,000)2. 문제 관찰 과정 및 풀이 2-1. 문제 관찰 과정최단 거리를 구하는 문제 이기 때문에 bfs를 떠올리게 되었고수만 주어지기 때문에 hashset으로 방문을 했었는지 확인하였다.2-2. 문제 풀이start와 end를 매개 변수로 받는 bfs메서드count를 각 경로마다 카운트하기 위해 node클래스를 만들어서 관리시작하는 노드를 큐에 넣고 방문으로 표시whil..

알고리즘/백준 2024.06.27

백준 1926 번 그림 -자바(Java)

https://www.acmicpc.net/problem/1926 문제어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다.입력첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m(1 ≤ m ≤ 500)이 차례로 주어진다. 두 번째 줄부터 n+1 줄 까지 그림의 정보가 주어진다. (단 그림의 정보는 0과 1이 공백을 두고 주어지며, 0은 색칠이 안된 부분, 1은 색칠이 된 부분을 의미한다)출력첫째 줄에는 그림의 개수, 둘째 줄에..

알고리즘/백준 2024.05.10

프로그래머스 미로 탈출 - 자바(java)

https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  최소 거리를 구하는 문제이기 때문에 bfs로 시작지점에서 레버까지의 거리와 레버에서 종료지점까지의 거리를 더하는 방법으로 문제를 풀었다.import java.util.LinkedList;import java.util.Queue;import java.awt.Point;import java.util.Arrays;class Solution { //시작 지점, 출구, 레버 저장하고 // bf..

프로그래머스 2024.05.09

백준 2178번 미로탐색 - 자바(Java)

https://www.acmicpc.net/problem/2178 문제N×M크기의 배열로 표현되는 미로가 있다.101111101010101011111011미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다.입력첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들..

알고리즘/백준 2024.05.09

프로그래머스 깊이/너비 우선 탐색(DFS/BFS) 타겟 넘버 - 자바(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 깊이 우선 탐색을 사용하여 푸는 문제이다. 배열의 값에 직접 * -1을 할까 하였지만 sum에 -해주거나 +기를 해주며 풀수 있었다. dfs를 오랜만에 어렵긴했지만 얼른 많이 풀어 실력을 쌓아야겠다. class Solution { int answer = 0; //[4, 1, 2, 1]42 public void dfs(int depth, int sum, int[] numbers, int target..

프로그래머스 2024.04.09

SWEA 14413. 격자판 칠하기

문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AYEXgKnKKg0DFARx SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com N X M 크기의 직사각형 격자판이 주어졌을때 각 칸에는 '?' '.' '#' 이 들어있는데 결론은 ?를 #이나 '.'로 바꾸었을때 #과 '.'이 겹치게 놓이면 안된다는 것이다. bfs를 통하여 풀려고 시도 하였고 여러번 시간 초과가 뜨다가 성공하였다. #이나 .에서 시작하여 상하좌우의 칸이 자신과 같은것이 있다면 impossible로 나오게 되고? 라면 자신과 반대의 값을 넣어주고 ..

SWEA 2023.11.16
반응형