[백준] 2467번 : 용액 (JAVA/자바)
·
PS/백준
[문제 링크]https://www.acmicpc.net/problem/2467문제 설명주어진 용액들 중에서 서로 다른 2개의 용액을 혼합해서 나온 값이 0에 가장 가까운 용액을 만들어 내는 두 용액을 구한다. 문제 풀이알고리즘 분류투포인터 용액이 오름차순 정렬되어 있는 상태이므로 가장 첫 번째 값 인덱스(left)와 가장 마지막 값 인덱스(right)를 포인터로 지정한 후, 배열이 안쪽 방향으로 두 포인터를 움직이면서 0에 가까운 두 수를 구한다. 1. 0과 n-1 를 투 포인터 left, right로 지정한다.2. left와 right 인덱스가 가리키는 두 값을 더한 값(sum)을 구한다.3. Math.abs(sum) sum 절대값이 현재 저장된 값보다 작을 경우 현재 저장된 값 업데이트4-1..
[백준] 1092번 : 배 (JAVA/자바)
·
PS/백준
[문제 링크] https://www.acmicpc.net/problem/1092 문제 설명크레인 N대를 사용해서 박스 M개를 모두 옮기는 데 드는 시간의 최솟값을 구한다.1분에 박스를 하나씩 옮길 수 있고, 모든 크레인은 동시에 움직인다.각 크레인의 무게 제한보다 무거운 박스는 옮길 수 없다.모든 박스를 옮길 수 없는 경우 -1 문제 풀이알고리즘 분류그리디 알고리즘정렬 크레인과 박스를 각각 내림차순 정렬한다.boxes.get(0) > crane.get(0) 박스 무게의 최대값이 크레인 무게제한의 최대값보다 클 경우 모든 박스를 옮길 수 없다.1. 가장 무거운 박스부터 차례대로 탐색하면서 각 크레인이 해당 박스를 옮길 수 있는지 확인한다.2. 해당 박스를 옮길 수 있으면 크레인 사용 처리, 리스트에서..
[백준] 14503번 : 로봇청소기 (JAVA/자바)
·
PS/백준
[문제 링크]https://www.acmicpc.net/problem/14503 문제 설명 0-청소X, 1-벽청소기가 작동하는 순서는 아래와 같다.1. 현재 칸이 아직 청소되지 않은 경우, 현재 칸 청소2. 현재 칸 주변 4칸 중 청소되지 않은 빈 칸이 없는 경우(4칸이 모두 청소된 경우) 2-1. 바라보는 방향 기준 한 칸 후진할 수 있다면, 후진 후 1으로 돌아감 2-2. 후진할 수 없는 경우(벽인 경우) stop3. 현재 칸 주변 4칸 중 청소되지 않은 빈 칸이 있는 경우 3-1. 청소기 반시계방향으로 90도 회전 3-2. 바라보는 방향 기준 앞쪽 칸이 청소되지 않은 경우, 한 칸 전진 3-3. 1으로 돌아감 문제 풀이알고리즘 분류구현시뮬레이션 문제에 주어진 청소기..
[백준] 17298번 : 오큰수 (JAVA/자바)
·
PS/백준
[문제 링크]https://www.acmicpc.net/problem/17298 문제 설명오큰수(NGE) : 현재 원소 Ai보다 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수, 존재하지 않으면 -1ex) A = {9, 5, 4, 8}인 경우 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1 문제 풀이알고리즘 분류스택 문제에서 수열의 크기 N이 최대 1,000,000(10^6) 이다.그래서 단순하게 현재 원소를 기준으로 오른쪽에 있는 모든 원소를 다 비교해가며 오큰수를 찾으면 O(n^2)로 시간 초과가 나온다. 따라서 Stack 을 사용하면 이 문제를 풀 수 있다.(다른 풀이를 참고했다.) 스택에는 아직 오큰수를 찾지 못한 원소의 인덱스 를 담는다..
[프로그래머스]완주하지 못한 선수 (JAVA/자바)
·
PS/프로그래머스
[문제 링크]https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 설명마라톤 참여자 배열 participant 와 완주자 배열 completion이 있을 때, 완주하지 못한 한 명을 구한다. 문제 풀이알고리즘 분류HashMap1. 배열 사용(내가 푼 방식) import java.util.*;class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; ..
[프로그래머스] 여행경로 (JAVA/자바)
·
PS/프로그래머스
[문제 링크]https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 설명{출발공항, 도착공항} 항상 "ICN"에서 출발해서 주어진 항공권을 모두 이용해서 여행 경로를 짠다.가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 선택한다. 문제 풀이알고리즘 분류DFS백트래킹 먼저 주어진 항공권에서 공항명을 알파벳 순서대로 정렬한다.출발공항 기준으로 알파벳 순 정렬, 출발공항이 같으면 도착공항 기준으로 알파벳 순 정렬→ 이렇게 하면 출발공항이 같고 도착공항이 다른 경로가 있을 경우, 알파벳 순서가..