본문 바로가기
반응형

Problem Solving/Leetcode25

[Leetcode] 3342. Find Minimum Time to Reach Last Room II 문제를 열어보고 아직 하루가 안 지났나? 라는 생각을 했다.다행히 자세히 확인해보니 아래 문구가 추가되어 있었다. Moving between adjacent rooms takes one second for one move and two seconds for the next, alternating between the two.: 이동할 때마다 1초, 2초를 번갈아 가며 더해준다.* alternating: 번갈아가며 그러니 어제 풀이를 그대로 가져와, 더해주는 1s 와 2s 를 번갈아가도록 바꿔만 주면 될 것 같았다.이동이 전제되어 있으니 좌표 값의 짝수/홀수 여부가 더해주는 시간과 대응하는 사실을 이용하기만 하면 될 것 같았다.결과는 성공이었다. 자세한 풀이는 아래 포스팅을 참고해보자. [Leetcode.. 2025. 5. 9.
[Leetcode] 3341. Find Minimum Time to Reach Last Room I 어딘가 낯이 익은 문제여서 제출 이력을 열었더니 2024년 11월 치열하게 풀었던 흔적이 보였다.반년이 지난 지금, 그래도 조금은 성장했나보다. 문제 설명n × m 크기의 던전이 있다.이 던전은 격자 형태로 구성되어 있으며, 각 방은 상하좌우로 인접한 방으로 이동할 수 있다.2차원 배열 moveTime이 주어진다.moveTime[i][j]는 (i, j) 위치의 방으로 이동을 시작할 수 있는 최소 시간(초)을 의미한다.초기 위치는 (0, 0)이며 시작 시간은 0초이다.인접한 방으로의 이동은 항상 1초가 소요된다.목표는 (n - 1, m - 1) 위치까지 이동하는 데 걸리는 최소 시간을 구하는 것이다. 예시예제 1입력: moveTime = [[0,4],[4,4]]출력: 6설명:t = 0 → (0,0)t = .. 2025. 5. 7.
[Leetcode] 1920. Build Array from Permutation 문제 설명정수 배열 nums가 주어진다.이 배열은 0부터 nums.length - 1까지의 숫자가 중복 없이 무작위로 섞인 zero-based permutation이다.이제 동일한 길이의 배열 ans를 다음 규칙에 따라 구성해야 한다.모든 i (0 ≤ i ans[i] = nums[nums[i]] 조건(제약사항)1 0 모든 nums[i]는 서로 다르다.즉, nums는 정확히 0부터 n-1까지의 정수가 한 번씩 등장하는 배열이다.풀이아주 쉽다.Python 으로 풀 때, List Comprehension 하나면 바로 풀린다.class Solution: def buildArray(self, nums: List[int]) -> List[int]: return [nums[i] for i in nu.. 2025. 5. 7.
[Leetcode] 790. Domino and Tromino Tiling 어려웠다.이 문제 때문에 연속으로 문제 푼 횟수에 해당하는 streak 기록도 깨졌다. 이 문제는 위 두 도미노를 배치하여 서로 다른 2 x n 모양을 만들 수 있는 경우의 수를 구하는 문제이다.n 값이 int 범위를 넘어갈 수도 있기에 $10^{9} + 7$ 으로 나눈 나머지 값을 반환한다. 배치하라, 경우의 수를 구하라.점화식 느낌이 오면서, Dynamic Programming 냄새가 물씬 풍긴다.그치만 냄새만 맡아서 뭐하는가.결국 풀 수 있어야 하는데, 모든 경우를 놓치지 않고, 중복 없이 셀 수 있는 점화식을 만들기가 쉽지 않았다. 예제 n = 4 일 떄, 11n = 5 일 때, 24n = 30 일 때, 312342182 이다. 풀이2개 도미노를 배치해서 나올 수 있는 끝 모양은 아래와 같이 .. 2025. 5. 6.
[Leetcode] 1007. Minimum Domino Rotations For Equal Row 문제 설명도미노 조각들이 일렬로 놓여 있다.각 도미노는 두 개의 숫자를 가지고 있으며, tops[i]와 bottoms[i]는 i번째 도미노의 윗면과 아랫면을 의미한다.도미노를 회전시켜 tops[i]와 bottoms[i]의 값을 서로 바꿀 수 있다.이때 모든 도미노의 윗면 또는 아랫면 숫자가 동일하도록 만들기 위한 최소 회전 횟수를 구하라.만약 그렇게 만드는 것이 불가능하다면 -1을 반환한다. 예시예제 1입력: tops = [2,1,2,4,2,2], bottoms = [5,2,6,2,3,2]출력: 2설명: 두 번째와 네 번째 도미노를 회전하면 윗면이 모두 2로 통일된다.예제 2입력: tops = [3,5,1,2,3], bottoms = [3,6,3,3,4]출력: -1설명: 어떤 방식으로 회전해도 한 줄을.. 2025. 5. 3.
[Leetcode] 838. Push Dominoes 도미노 시뮬레이션 - 최종 상태 구하기도미노를 한 줄로 세워놓고 몇 개를 왼쪽 또는 오른쪽으로 밀었다고 해보자.각 도미노는 옆으로 넘어지면서 인접한 도미노에 영향을 주게 된다.하지만 양쪽에서 동시에 힘을 받는다면? 그 도미노는 그대로 서 있게 된다.이 문제는 그런 도미노의 물리적인 시뮬레이션을 문자열로 표현하고, 최종 상태를 계산하는 것이 목표다. 문제 정의입력으로 도미노의 초기 상태를 나타내는 문자열 dominoes가 주어진다.각 문자는 다음을 의미한다:'L': 왼쪽으로 밀린 도미노'R': 오른쪽으로 밀린 도미노'.': 아직 밀리지 않은 도미노이 문자열을 기반으로 도미노가 시간이 지남에 따라 연쇄적으로 쓰러지는 과정을 시뮬레이션한 후, 최종 상태를 반환해야 한다. 예시Input: dominoes = .. 2025. 5. 3.
반응형