본문 바로가기
반응형

leetcode23

[Leetcode] 3355. Zero Array Transformation I 보자마자 Segment Tree Lazy Update 문제네! 하고 접근했습니다.2시간을 꼼지락 거리다가 반례를 만나고서야 이게 아니네 싶었습니다.그리고 늦은 시간이라 자야겠다고 눕는 순간 풀이가 떠올랐습다. 우선 Lazy Update 가 안 되는 이유를 보겠습니다.아래와 같은 상태에서 (1, 3) 이라는 쿼리가 들어왔다고 가정하겠습니다.이 문제는 합을 구하는게 아니라 범위에 -1을 수행해 0을 만들 수 있는지를 확인하는 것이 목적입다.따라서, 1번과 2번에는 -1이 들어가지 않고, 3번에만 -1이 수행되어 최상위 노드 값은 0이 아닌 2가 됩니다. 그럼 어떻게 풀어야 할까요?올 해 3월 똑같은 문제를 풀었던 기억이 스쳤습니다. 2025.03.24 - [Problem Solving/Leetcode] - .. 2025. 5. 21.
[Leetcode] 1931. Painting a Grid With Three Different Colors 문제 설명m x n 크기의 격자가 있다.각 칸은 반드시 빨강(R), 초록(G), 파랑(B) 중 하나의 색으로 칠해야 한다.단, 서로 인접한 칸은 같은 색으로 칠할 수 없다.여기서 인접하다는 것은 상하좌우 방향을 의미한다.이 조건을 만족하도록 모든 셀을 칠하는 방법의 수를 구하라.답이 매우 클 수 있으므로 1,000,000,007 (10⁹+7) 로 나눈 나머지를 반환하라. 예시예제 1입력: m = 1, n = 1출력: 3설명: R, G, B 중 하나를 선택할 수 있다 → 3가지예제 2입력: m = 1, n = 2출력: 6설명: 첫 칸을 3가지 중 하나로 칠하고, 다음 칸은 나머지 2가지 중 하나 선택 → 3×2 = 6예제 3입력: m = 5, n = 5출력: 580986설명: 조건을 만족하는 방법 수는 매.. 2025. 5. 20.
[Leetcode] 2901. Longest Unequal Adjacent Groups Subsequence II 역시 Computational Thinking 정수는 Dynamic Programming 문제 유형이다.많이 풀어보고 익숙해지지 않으면 발상하기 쉽지 않은 사고 방식이라 더욱 매력적이다.오랜만에 재밌는 문제였다. 이런 유형 문제를 많이 풀어보고 싶다는 생각까지 들었다.물론 퇴근하고 여기에 갖다 바친 내 3시간은 전혀 재밌지 않다.사실 설명 자체가 DP 유형 문제 만들기 위해 어거지로 써놓은 느낌도 있고. 문제 설명문자열 배열 words와 정수 배열 groups가 주어진다.두 배열의 길이는 동일하며 각각의 인덱스 i는 하나의 단어와 해당 단어의 그룹을 나타낸다.우리는 [0, 1, ..., n-1]의 인덱스 중 일부를 골라 최장 부분수열(subsequence)을 선택해야 한다.단, 다음 조건을 만족해야 .. 2025. 5. 17.
[Leetcode] 2918. Minimum Equal Sum of Two Arrays After Replacing Zeros 문제 설명양의 정수로 이루어진 두 배열 nums1, nums2가 주어진다.이 두 배열에는 0이 포함될 수 있으며, 각 0은 **양의 정수(1 이상)**로 자유롭게 교체할 수 있다.목표는 다음 두 조건을 동시에 만족하도록 만드는 것이다.nums1과 nums2의 합이 같아야 한다.이 공통된 합은 가능한 한 최소여야 한다.가능하다면 그 최소 합을 반환하고,그럴 수 없다면 -1을 반환한다. 예시예제 1입력: nums1 = [3,2,0,1,0], nums2 = [6,5,0]출력: 12설명:nums1의 0을 2와 4로 대체 → [3,2,2,1,4], 합 = 12nums2의 0을 1로 대체 → [6,5,1], 합 = 12가능한 최소의 공통 합이다.예제 2입력: nums1 = [2,0,2,0], nums2 = [1,4.. 2025. 5. 11.
[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.
반응형