본문 바로가기

반응형

leetcode 문제 풀이

(11)
LeetCode 1518. Water Bottles 자바 문제 풀이 문제 설명문제: LeetCode 1518. Water Bottles설명: 우리는 numBottles개의 물병을 가지고 있습니다. 빈 병 numExchange개를 새 물병 하나로 교환할 수 있습니다. 최대 몇 병의 물을 마실 수 있는지 계산하는 문제입니다.접근 방식아이디어:초기에는 numBottles개의 물병을 모두 마십니다.마신 후에는 빈 병이 numBottles개 생깁니다.이 빈 병으로 새 물병을 교환합니다. 교환할 수 있는 만큼 새 물병을 마시고 다시 빈 병이 생기면 또 교환합니다.빈 병의 개수가 numExchange보다 작아질 때까지 이 과정을 반복합니다.마지막으로 총 마실 수 있는 물병의 수를 반환합니다.알고리즘:canDrink 변수를 초기 물병 개수로 설정합니다.numBottles가 numExc..
LeetCode 2582. Pass the Pillow 자바 문제 풀이 문제 설명문제: https://leetcode.com/problems/pass-the-pillow/description/설명: 1번부터 n번까지의 사람이 원형으로 서 있습니다. 1번 사람이 베개를 가지고 있고, 매 시간마다 베개를 오른쪽으로 한 사람에게 전달합니다.마지막에 도달하면 반대로 n번에서 1번으로 베개를 전달합니다. time 시간 후에 베개를 가진 사람의 번호를 반환하세요.접근 방식아이디어:문제를 더 쉽게 이해하기 위해 전체 원을 몇 바퀴 도는지를 먼저 계산합니다.각 바퀴는 n-1 시간이 걸리므로 time / (n-1)을 통해 전체 바퀴 수를 구합니다.n이 4일 경우, 1에서 3번 이동해야 4에 도착합니다. 1→2→3→4그 후 남은 시간을 time % (n-1)으로 구하고, 이 값을 이용하여 베..
LeetCode 2058. Find the Minimum and Maximum Number of Nodes Between Critical Points 자바 문제 풀이 문제 설명문제: LeetCode 2058. Nodes Between Critical Points설명: 주어진 단일 연결 리스트에서 local maxima(큰 값) 또는 local minima(작은 값)의 노드 사이의 최소 거리와 최대 거리를 찾아야 합니다.local maxima는 양 옆의 노드의 값보다 큰 값을 말합니다. ex) 3-9-6local minima는 양 옆의 노드의 값보다 작은 값을 말합니다. ex) 6-1-7접근 방식아이디어:링크드리스트에서 각 노드의 값이 local maxima혹은 local minima인지 확인하여 이 값을 미리 저장해둡니다.저장된 값을 비교하여 최소 거리와 최대 거리를 찾습니다.알고리즘:각 노드의 값이 local maxima혹은 local minima인지 확인하기위해 ..
LeetCode 1701. Average Waiting Time 자바 문제 풀이 문제 설명문제: https://leetcode.com/problems/average-waiting-time/설명: 각 고객의 도착 시간과 요리 시간을 고려하여 모든 고객의 평균 대기 시간을 구하는 문제입니다. 각 고객은 이전 고객의 요리가 끝난 후에 요리를 시작할 수 있습니다.접근 방식아이디어:요리시간은 언제나 현재 시간에 더해집니다. 손님이 늦게 도착하든 빠르게 도착하든 소모됩니다.현재 시간이 고객의 도착 시간보다 작다면, 현재 시간을 고객의 도착 시간으로 업데이트합니다.고객의 도착 시간과 요리 시간이 주어지므로, 고객이 도착한 이후 요리가 끝날 때까지 걸리는 시간을 계산하여 총 대기 시간에 더합니다.알고리즘:totalWaitTime과 currentTime 변수를 초기화합니다.각 고객에 대해 다음을 수..
LeetCode 1598. Crawler Log Folder 자바 문제 풀이 LeetCode 1598. Crawler Log Folder 자바 문제 풀이문제 설명문제: https://leetcode.com/problems/crawler-log-folder/description/설명: 주어진 로그 배열을 기반으로 파일 시스템의 디렉토리 깊이를 계산합니다. "./"은 현재 디렉토리를 나타내고, "../"는 상위 디렉토리를 나타냅니다.접근 방식아이디어: 주어진 로그를 순회하면서 디렉토리의 깊이를 추적합니다.알고리즘:초기 깊이(depth)를 0으로 설정합니다.각 로그를 순회하면서:"./"일 경우 특별히 처리할 필요 없이 넘어갑니다."../"일 경우 현재 깊이(depth)가 0보다 크면 상위 디렉토리로 이동하므로 깊이를 하나 줄입니다.디렉토리는 0이하가 될수 없으므로, 0보다 클때만 깊이..
LeetCode 1823. Find the Winner of the Circular Game 자바 문제 풀이 문제 설명문제: LeetCode 1823. Find the Winner of the Circular Game설명: 1부터 n까지 번호가 붙은 n명의 사람이 원형으로 앉아 있습니다. 이 게임은 k번째 사람을 제거하는 방식으로 진행되며, 마지막 한 사람이 남을 때까지 계속됩니다. 최종 승자의 번호를 반환하세요.접근 방식아이디어:조세퍼스 문제(Josephus problem)로 알려진 문제입니다.원형 리스트에서 매 k번째 사람을 제거하는 과정을 반복하여 최종 승자를 찾습니다.알고리즘:LinkedList를 사용하여 1부터 n까지의 숫자를 저장합니다.현재 제거할 사람의 위치를 추적하기 위해 removeMarker 변수를 사용합니다.리스트의 크기가 1이 될 때까지 다음 과정을 반복합니다:removeMarker를 (현..
LeetCode 2181. Merge Nodes in Linked List 자바 문제 풀이 문제 설명문제: https://leetcode.com/problems/merge-nodes-in-between-zeros/설명: 주어진 단일 연결 리스트에서 특정 조건에 따라 노드를 합치는 작업을 수행해야 합니다.접근 방식아이디어:링크드리스트를 순회하면서 값이 0인지 확인합니다.값이 0이 아니면 더해서 저장해둡니다.값이 0인 노드를 찾으면, 지금까지 더한값을 가진 새로운 노드를 생성하고, 새로운 링크드리스트에 추가합니다.알고리즘:값이 0인 노드를 넣어둘 링크드리스트 resultNode를 생성합니다.나중에 리턴하기위해 더미헤드를 생성하여 resultNode에 연결해놓습니다.더한 값을 넣어둘 변수 addedVal을 생성합니다.주어진 링크드리스트를 순회합니다.노드의 값이 0이 아닌경우 값을 더합니다.노드의 값..
LeetCode 1509. Minimum Difference Between Largest and Smallest Value in Three Moves 자바 문제 풀이 문제 설명문제: https://leetcode.com/problems/minimum-difference-between-largest-and-smallest-value-in-three-moves/description설명: 정수 배열에서 최대 3개의 숫자를 제거하여 나머지 숫자들의 차이값(최대값 - 최소값)를 최소화해야 합니다.접근 방식아이디어:3개의 숫자를 제거하는 모든 경우의 수를 고려합니다.리스트가 4개 이하라면 변경된 숫자끼리 차이값을 만드는게 가능하므로, 차이값은 무조건 0입니다.리스트가 5개 이후부터 변경된 숫자를 제외한 두 숫자의 차이값이 가장 작습니다.차이값이 가장 큰 값은 가장 큰수와 가장 작은수이므로, 앞에서부터 3개의 숫자와 뒤에서부터 3개의 숫자를 확인하기위해 정렬합니다.3개의 숫자를 ..

반응형