169. Majority Element
2025-07-30
LeetCode 169번 풀이
이 글은 Obsidian에서 마이그레이션되었으며, 그 과정에서 AI의 도움을 받았습니다. 오류나 누락된 내용이 있다면 댓글로 알려주세요!
문제
풀이 1
아이디어
그냥 풀었던 버전 -> 요렇게 풀면 정렬 때문에 시간 복잡도가 O(nlogn)이 나온다.
코드
function majorityElement(nums: number[]): number {
return nums.sort((a, b) => a - b)[Math.floor(nums.length / 2)];
}시간 복잡도
- 시간 복잡도: O(nlogn)
풀이 2 - Boyer–Moore Voting Algorithm
코드
function majorityElement(nums: number[]): number {
let count = 0;
let candidate = 0;
for (let idx = 0; idx < nums.length; idx++) {
// count가 0인 경우에는 현재 요소를 새로운 후보로 설정하고 count = 1
if (count === 0) {
candidate = nums[idx];
count = 1;
} else {
candidate === nums[idx] ? count++ : count--;
}
}
return candidate;
}시간 / 공간 복잡도
- 시간 복잡도: O(n)
- 공간 복잡도: O(1)