-
LeetCode 2540. Minimum Common Value개발/알고리즘 2025. 4. 9. 16:45반응형
📘 LeetCode 2540. Minimum Common Value
📝 문제 설명
두 개의 정렬된 정수 배열
nums1과nums2가 주어진다.
두 배열 모두에 공통으로 존재하는 가장 작은 정수를 반환하라.공통된 값이 없으면
-1을 반환한다.🔹 제약 사항
- 두 배열 모두 오름차순 정렬되어 있음
- 각 배열의 길이는 1 이상 10⁵ 이하
🔸 예시
✅ 예시 1
Input:
nums1 = \[1, 2, 3\], nums2 = \[2, 4\]Output:
2✅ 예시 2
Input:
nums1 = \[1, 2, 3, 6\], nums2 = \[4, 5, 6\]Output:
6
💡 해설
두 배열이 모두 오름차순 정렬되어 있다는 점을 활용하면,
투 포인터 방식으로 매우 효율적으로 풀 수 있다.
🚀 해결 전략
- 포인터
i,j를 각각nums1,nums2의 시작 인덱스로 둔다. - 다음을 반복한다:
- 만약
nums1[i] == nums2[j]→ 공통 원소이므로 반환 nums1[i] < nums2[j]→ 더 큰 쪽과 맞추기 위해i++- 반대라면
j++
- 만약
- 배열 끝까지 가도록 공통 원소가 없다면 →
-1반환
이 방식은 시간 복잡도 O(n + m) 으로 매우 효율적이다.
💻 Java 코드
class Solution { public int getCommon(int[] nums1, int[] nums2) { int i = 0, j = 0; while (i < nums1.length && j < nums2.length) { if (nums1[i] == nums2[j]) { return nums1[i]; } else if (nums1[i] < nums2[j]) { i++; } else { j++; } } return -1; } }
✅ 포인트 정리
- 배열이 정렬되어 있을 때는 투 포인터가 최적
- 교집합의 첫 번째 요소만 구하면 되므로 중간에 바로 return 가능
- 교집합 전체가 아니라 **"최소 공통값"**만 찾는 문제
반응형'개발 > 알고리즘' 카테고리의 다른 글
LeetCode 917. Reverse Only Letters (0) 2025.04.09 LeetCode 557. Reverse Words in a String III (0) 2025.04.09 위상정렬 (Topological Sort) 완벽 정리 (0) 2025.04.02 백준 2565번 - 전깃줄 (LIS / DP / 이분 탐색) 파이썬 (0) 2025.03.28 백준 9655번 - 돌 게임 파이썬 (0) 2025.03.28