algorithm (135) 썸네일형 리스트형 프로그래머스_가장 먼 노드(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] BFS(Breadth-First Search)를 이용하여 문제를 풀었습니다. 그래프의 거리, 가중치 등을 구하는 방법은 몇 가지가 있습니다. 대표적으로 다익스트라, MST, BFS 등이 있습니다. 해당 문제와 같이 가중치와 방향이 없는 무방향 그래프는 인접행렬 또는 인접그래프 형식으로 문제를 해결하는 경우가 많습니다. 문제에서 요구하는 것은 1번 노드에서 가장 멀리 떨어진 노드의 갯.. 프로그래머스_도둑질(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/42897 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] DP(Dynamic Programming)를 이용하여 문제를 풀었습니다. 도둑질 문제는 주어진 집 배열에서 인접한 두 집을 연속해서 털지 않고 훔칠 수 있는 최댓값을 구하는 문제입니다. 주어진 문제는 두 집을 연속해서 털 수 없기 때문에 첫번째 집을 터는 경우와 털지 않을 경우를 나눠야 합니다. 각각의 경우에 대해서 DP 배열에 메모라이징합니다. 구현방법은 아래와 같습니다. 집 배열.. 프로그래머스_단속카메라(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [JAVA] import java.util.*; class Solution { public int solution(int[][] routes) { int answer = 1; //도로의 끝나는 지점을 기준으로 정렬합니다. Arrays.sort(routes, (o1, o2) -> o1[1] - o2[1]); int current_end = routes[0][1]; for(int i = 0; i < .. 프로그래머스_섬 연결하기(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/42861 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 크루스칼 알고리즘을 이용하여 문제를 풀었습니다. 섬 연결하기 문제는 전형적인 최소신장트리 문제입니다. 최소신장트리의 종류는 몇 가지가 존재하는데 그 중 하나가 크루스칼 알고리즘입니다. 알고리즘에 대한 내용은 아래 링크를 참고 바랍니다. https://steady-life.tistory.com/128 서로소 집합(Disjoint Set, Union-Find) 서로소 집합 교집합이 공집.. 프로그래머스_구명보트(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [JAVA] import java.util.*; class Solution { public int solution(int[] people, int limit) { int answer = 0; Arrays.sort(people); int min_index = 0; int max_index = people.length - 1; //가장 무거운 사람과 가장 가벼운 사람을 선택하여 함께 보낼 수 있는 경.. 프로그래머스_큰 수 만들기(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 그리디를 이용하여 문제를 풀었습니다. 큰 수 만들기 문제는 주어진 숫자에서 k의 숫자를 뺏을 때 만들 수 있는 가장 큰 숫자를 구하는 문제입니다. 하지만 숫자를 썪을 수는 없으며, 순서가 보장 되어야 합니다. 구현방법은 아래와 같습니다. 주어진 숫자에서 뒤 k-1 을 제외한 것 중에 가장 큰 숫자를 뽑아 answer에 넣어주고 이를 반복합니다. [JAVA] class Solution.. 프로그래머스_조이스틱(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/42860 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 그리디를 이용하여 문제를 풀었습니다. 조이스틱 문제는 목표한 글자를 네 방향으로 조이스틱으로 움직여서 만들 수 있는 최소 조작 횟수를 구하는 문제입니다. 아래 위로 움직이는 횟수와 옆으로 움직이는 횟수를 나누어 계산한 후 더해주는 방법으로 해결하였습니다. 구현방법은 아래와 같습니다. 옆으로 움직이는 최대 횟수를 지정합니다. 배열을 순회하면서 위/아래 중 적게 움직이는 횟수를 구합니다.. 프로그래머스_이중우선순위큐(JAVA) https://school.programmers.co.kr/learn/courses/30/lessons/42628 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 우선순위큐를 이용하여 문제를 풀었습니다. 이중우선순위큐 문제는 최대/최소 값을 경우에 따라 삭제할 수 있는 우선순위큐를 만드는 문제였습니다. 문제를 해결하기 위해 최대/최소 우선순위큐를 하나씩 만들어 주었고 최대값을 빼야 될 경우 최대 우선순위큐에서 값을 빼주고 최소 우선순위큐에서 값을 제거해주는 식으로 구현하였습니다.(반대의 경우도 같음) 구현방법은 아래와 같습니다. 최대/최소 우.. 이전 1 2 3 4 ··· 17 다음