dfs 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 1244 최대상금 JAVA

[S/W 문제해결 응용] 2일차 - 최대 상금 문제 링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15Khn6AN0CFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 처음에 제일앞에 큰 숫자가 오는 방향으로 이중 for문으로 구현하였으나 시간초과가 떴고 이를 보완하여 dfs를 이용한 완전탐색을 구현하였다. 또한 그렇게구현하였는데 모든 테스트 케이스를 통과 하지 못하였다. 확인해 보니 dfs() 메소드의 return을 하는 if문에 걸리지 않기 때문이란것을 알게되었는데 주어진 숫자판과 교환가능 횟수를 비교 ..

SWEA 2023.11.03
반응형