dfs(15)
-
[Programmers] 게임 맵 최단거리
https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 기본적인 DFS/BFS 문제이다. 다만 효율성 때문에 BFS를 사용해야 한다. DFS로 해결하면 효율성 테스트 케이스를 통과하지 못한다. 코드 BFS import java.util.Queue; import java.util.LinkedList; class Solution { private int targetX; private int targetY; private final int[] dx..
2023.09.05 -
[Programmers] 모음사전
https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 DFS를 활용한 완전탐색으로 해결할 수 있는 문제이다. 코드 import java.util.List; import java.util.ArrayList; class Solution { private final String[] VOWELS = {"A", "E", "I", "O", "U"}; private final int MAX = 5; public int solution(String wo..
2023.09.04 -
[Programmers] 타겟 넘버
https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 간단한 완전 탐색 문제이다. DFS를 활용하여 해결했다. 현재 위치와 numbers의 길이가 같으면 모든 수에 대한 연산을 한 것이므로 그때의 합계를 타겟 넘버와 비교한다. 만약 같다면 1을, 아니라면 0을 반환하고 그 총합을 result에 담아 반환하면 된다. 코드 class Solution { public int solution(int[] numbers, int target) { r..
2023.08.17 -
[Programmers] 피로도
https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 완전 탐색 문제이며 필자는 DFS를 활용하여 해결했다. 재귀에서 가장 중요한 건 종료 조건이다. 이 문제의 종료 조건으로는 두 가지를 넣었다. 하나는 피로도가 현재 입장할 던전의 최소 피로도보다 낮을 경우이고 다른 하나는 현재 입장한 던전 개수가 총 던전 개수와 같을 경우이다. 전자의 경우는 현재까지의 던전 입장 횟수와 최댓값의 대소비교를 통해 더 큰 값을 저장한다. 후자의 경우는 모든..
2023.08.17 -
[Baekjoon] 14889번: 스타트와 링크
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 문제 설명 N명의 사람들이 짝수로 주어진다. 같은 인원으로 두 팀으로 나누어 축구를 하려 한다. 이때 양 팀의 인원들은 서로의 팀 능력치가 있다. 양 팀의 실력이 비슷해야 게임이 재미있기 때문에 양 팀의 팀 능력치 차이가 가장 적을 때 그 차이를 출력해야 한다. 풀이 방법 DFS로 해결했다. 포인트는 인덱스와 팀원을 구성한 횟수를 파라미터로 넘겨서 종료 조건을 체크하는 것이다. 그리고 종료 후에 다시 방문했던 곳을 f..
2023.03.10 -
[Baekjoon] 1926번: 그림
https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 문제 설명 1과 0으로 구성된 그림 배열이 주어진다. 1로 이어진 것이 그림이다. 상하좌우로만 연결된 것으로 판단하며 대각선은 이어진 것이 아니다. 주어진 배열에서 그림 개수와 가장 크기가 큰 그림의 크기를 출력하면 된다. 풀이 방법 기본적인 그래프 탐색 문제이며 DFS와 BFS로 문제를 해결할 수 있다. DFS for (int i = 0; i < n; i++) { for (int j = 0; j < ..
2023.03.09