Programmers - 구명보트 with JAVA
문제의 조건은 아래와 같다 1. 구명보트에는 두명까지 탈 수 있다. 2. 두사람의 몸무게의 합이 limit보다 작아야 한다. 3. 최소한의 보트를 사용하여 모든 사람을 구조한다. 로직 1. 몸무게 배열을 정렬한다. 2. 투포인터를 활용해 보트의 태울 사람을 정한다. 왼쪽의 해당하는 무게와 오른쪽의 해당하는 무게의 합이 limit이하라면 둘 다 태우고 왼쪽, 오른쪽 인덱스 모두 변경 아니라면 무거운 쪽에 해당하는 오른쪽의 무게만 태우고 오른쪽 인덱스 변경 만약 오른쪽, 왼쪽 인덱스 값이 같아진다면 한명 태우고 종료 [50, 20, 30, 70, 30, 40] 이라는 데이터가 있고 limit이 100이라고 가정한다. 정렬하면 [20, 30, 30, 40, 50, 70, 90]이 된다. 이때 왼쪽 포인터 0,..
Programmers - 여행경로 with JAVA
프로그래머스 문제 중 '여행경로' 문제에 대해서 블로그를 작성해보려고 한다. 우선, 입력은 다음과 같이 티켓이 주어진다. [[ICN, JFK] , [HND, IAD], [JFK, HND]] 조건은 다음과 같다. 1. 출발지는 ICN이다. 2. 모든 티켓을 사용한다. 3. 경로가 여러개라면 알파벳 순으로 정렬해서 첫번째 티켓을 출력한다. 나머지는 길이나 부가적인 조건이다. 출력은 다음과 같다. [ICN, JFK, HND, IAD] 와 같이 경로를 출력한다. 구현 1. 출발지는 ICN이다 -> for문을 돌며 티켓의 시작이 ICN이면 DFS를 돌린다. 2. 모든 티켓을 사용한다. -> DFS를 돌며 티켓의 길이가 다 찼을때, 반환시킨다. 3. 알파벳 정렬 -> 티켓이 여러개일 경우 -> String으로 나열..