LeetCode 51. N-Queens

문제 설명 N-Queens - LeetCode N × N 체스판에 N개의 퀸(Queen) 을 배치하는 문제입니다. 단, 퀸들은 서로 공격할 수 없어야 함 (즉, 같은 행, 같은 열, 같은 대각선에 배치되지 않아야 함). ✅ 출력 형식 가능한 모든 배치를 2D 리스트 형태로 출력 각 리스트는 N개의 문자열로 구성되며, Q는 퀸의 위치 .는 빈 칸을 의미 ✅ 제약 조건 1 ≤ N ≤ 9 백트래킹(Backtracking)을 사용하여 최적의 해를 탐색해야 함 해설 1️⃣ 브루트포스 (O(N!)) → 비효율적 모든 가능한 배치를 완전 탐색하여 조건을 확인 N! 개의 경우의 수 발생 비효율적이므로 사용하지 않음 2️⃣ 백트래킹 (Backtracking, O(N!)) [추천] DFS(깊이 우선 탐색) + 가지치기(Pruning) 사용 퀸을 하나씩 배치하며, 유망하지 않은 경우 즉시 백트래킹 O(N!)로 해결 가능하며, N이 작을 경우 빠르게 동작 ✔ 배열을 사용하여 퀸 배치 유효성 검사 ...

February 11, 2025 · 3 min · Me

LeetCode 1. Two Sum

문제 설명 Two Sum - LeetCode 정수 배열 nums와 목표 값 target이 주어졌을 때, 배열에서 두 수의 합이 target이 되는 두 개의 인덱스를 반환하는 문제입니다. ✅ 조건: 각 입력에 정확히 하나의 정답이 존재하며, 같은 요소를 두 번 사용할 수 없음. 정답은 어떤 순서로든 반환 가능함. 해설 1️⃣ 브루트포스 (Brute-force, O(N²)) 모든 가능한 두 수의 조합을 탐색하여 target과 비교 시간 복잡도: O(N²) → 비효율적 (배열 크기가 크면 실행 속도가 느림) 2️⃣ 해시맵(HashMap, O(N)) [추천] 한 번의 순회로 해결 target - nums[i] 값을 해시맵(dictionary)에 저장하여 빠르게 조회 시간 복잡도: O(N) → 매우 효율적 (빠른 검색 가능) 코드 풀이 Python 1 2 3 4 5 6 7 8 9 10 11 12 def twoSum(nums, target): num_map = {} # 딕셔너리 (해시맵) 선언 for i, num in enumerate(nums): complement = target - num # 목표 값에서 현재 숫자를 뺀 값 if complement in num_map: # 해시맵에서 찾기 return [num_map[complement], i] num_map[num] = i # 현재 숫자 저장 return [] # 결과가 없을 경우 (문제에서 항상 정답이 존재한다고 가정) Javascript 1 2 3 4 5 6 7 8 9 10 11 12 13 14 var twoSum = function(nums, target) { let numMap = new Map(); // 해시맵 선언 for (let i = 0; i < nums.length; i++) { let complement = target - nums[i]; if (numMap.has(complement)) { return [numMap.get(complement), i]; } numMap.set(nums[i], i); } return []; }; 참고 및 출처 programmers Coding Test LeetCode - The World’s Leading Online Programming Learning Platform ...

February 7, 2025 · 2 min · Me