LeetCode 문제 풀이: 두 수의 합

두 수의 합 문제: 주어진 정수 배열 nums와 대상 값 target에서 배열 중 두 수를 찾아 합이 target인 두 수의 인덱스를 반환해야 합니다. 배열의 같은 원소를 반복해서 사용할 수 없습니다. 주어진 입력값은 하나의 정답을 가지며, 하나의 정답만 있을 것입니다. 예제: nums = [2, 7, 11, 15], target = 9 nums[0] + nums[1] = 2 + 7 = 9 따라서 [0, 1]을 반환합니다. ...

8월 30일 04:58에 게시됨

백트래킹을 활용한 IP 복원 및 부분집합 문제 해결

93. 유효 IP 주소 복원하기 문제는 주어진 숫자 문자열에서 올바른 IP 주소를 생성하는 것입니다. 유효한 IP는 다음과 같은 조건을 만족해야 합니다: 총 네 개의 정수로 구성되며 각각은 0~255 범위에 있어야 함 각 정수는 선행 0을 포함할 수 없음 (예: "01", "00") 정수 간에는 점(.)으로 구분됨 이 문제는 문자열을 분할하는 형태로 백트래킹 알고리즘을 적용하여 모 ...

8월 27일 00:11에 게시됨

134. 주유소

원형 경로에 n개의 주유소가 있으며, i번째 주유소는 gas[i] 리터의 연료를 가지고 있습니다. 무한한 탱크 용량을 가진 자동차를 사용하여, i번째 주유소에서 i+1번째 주유소로 이동할 때 cost[i] 리터의 연료를 소모합니다. 하나의 주유소에서 출발하여 탱크가 비어 있는 상태에서 시작합니다. 두 정수 배열 gas와 cost가 주어졌을 때, 원형 경로를 한 바퀴 돌 수 있다면 ...

8월 16일 21:52에 게시됨

기술 면접 대비 해시 테이블을 활용한 문제 해결 패턴

해시 데이터 구조의 적용 사례와 최적화 기법 알고리즘 문제를 해결하는 과정에서 특정 원소의 존재 유무나 빈도수를 빠르게 확인해야 하는 상황은 매우 흔합니다. 이때 단순한 나열된 데이터를 순회하며 비교하는 방식은 시간 복잡도가 O(N^2)에 달할 수 있어 비효율적입니다. 이러한 경우 선형 시간인 O(1) 검색 성능을 제공하는 해시 테이블 (HashMap 또는 Set) 을 활 ...

8월 13일 22:44에 게시됨

LeetCode Weekly Contest 90 알고리즘 문제 풀이

1. Buddy Strings (친밀한 문자열) 두 개의 문자열 s와 goal이 주어졌을 때, s의 두 문자를 단 한 번 교체하여 goal과 동일하게 만들 수 있는지 확인하는 문제입니다. 풀이 전략: 두 문자열의 길이가 다르면 절대 같아질 수 없으므로 false를 반환합니다. 두 문자열이 이미 같다면, 문자열 내에 중복된 문자가 하나라도 있어야 교체 후에도 동일함을 유지할 수 있 ...

7월 30일 20:15에 게시됨

LeetCode 코딩 문제 해결 중 발생하는 흔한 오류와 해결 방법

서론 보통 LeetCode 문제를 풀 때 저는 연습장이나 로컬 에디터를 사용하지 않고 문제 페이지의 코드 편집기에서 직접 코드를 작성합니다. 이러한 방식으로 문제를 푸는 경우 유료 기능을 사용하지 않으면 예상치 못한 버그가 발생할 수 있으며, 이를 찾는 데 많은 시간이 소요됩니다. 이 글에서는 과거에 경험한 문제들을 정리하고자 합니다. 사례 1 오랜 시간 동안 문제 ...

7월 28일 19:44에 게시됨

최대 백색 타일 수 계산: 슬라이딩 윈도우와 경계 조건 처리

문제 해결을 위해 배열을 사용하려 했으나 메모리 초과가 발생하여, 원본 데이터를 직접 수정하며 슬라이딩 윈도우 방식으로 접근했다. 특히 경계 조건 처리는 항상 어려운 부분이지만, 핵심은 구간 커버리지 문제에서 각 구간의 우측 끝점을 기준으로 왼쪽으로 확장 가능한 최대 길이를 탐색하는 것이다. 주요 전략은 다음과 같다: 먼저 타일의 시작 위치 기준으로 정 ...

7월 27일 06:37에 게시됨

LeetCode 20: 유효한 괄호 - 왜 이웃한 두 문자에만 의존할 수 없는가

이 문제는 LeetCode 20번, 유효한 괄호에 관한 것입니다. 주어진 문자열은 다음 여섯 가지 문자만 포함합니다: ( ) [ ] { } 이 문자열이 "유효한지" 판단해야 합니다. 유효하다는 것은 다음을 의미합니다: 왼쪽 괄호는 같은 타입의 오른쪽 괄호로 닫혀야 합니다. 왼쪽 괄호는 올바른 순서로 닫혀야 합니다. 모든 오른쪽 괄호에 ...

7월 23일 02:31에 게시됨

LeetCode 239. 슬라이딩 윈도우 최대값

239. 슬라이딩 윈도우 최대값 문제 설명 정수 배열 nums가 주어졌을 때, 크기 k의 슬라이딩 윈도우가 배열의 가장 왼쪽에서 가장 오른쪽으로 이동합니다. 윈도우 내의 k개의 숫자만 볼 수 있습니다. 윈도우는 매번 오른쪽으로 한 칸씩 움직입니다. 윈도우 내의 최대값을 반환하세요. 예제 1: <strong>입력:</strong> nums = [1,3,-1,-3,5,3,6,7], k = 3 <st ...

7월 16일 17:35에 게시됨

LeetCode 동적 계획법 문제 해결 전략

동적 계획법 핵심 개념 동적 계획법은 중복 하위 문제가 많은 최적화 문제에 효과적입니다. 문제를 하위 문제로 분해하고, 동일 계산을 반복하지 않도록 결과를 저장합니다. 최적 부분 구조가 존재해야 적용 가능하며, 이는 지역 최적해가 전역 최적해로 이어지는 구조를 의미합니다. 핵심은 상위 문제 해결에 하위 문제의 결과가 재사용되는 점입니다. 대표적인 예로 피 ...

7월 9일 21:30에 게시됨