프론트 개발자를 위한 여정

모든 영역을 안내하는 개발자

Algorithm 37

[leetcode] Palindrome Number/ 팔린드롬 수, 배열 풀이 vs 공간 최적화 풀이

🌀 팔린드롬(Palindrome) 수란?팔린드롬(Palindrome)은 앞에서 읽든 뒤에서 읽든 똑같은 수를 말합니다.예를 들어:121 → 팔린드롬 ✅12321 → 팔린드롬 ✅123 → 팔린드롬 ❌-121 → 음수는 회문이 아님 ❌📌 문제 설명 (LeetCode 9. Palindrome Number)주어진 정수 x가 팔린드롬인지 확인하는 함수를 작성하시오.단, 음수는 팔린드롬이 아니며, 숫자를 문자열로 바꾸지 않고 해결하길 권장합니다. // Example 1:Input: x = 121Output: true// Example 2:Input: x = -121Output: false// Example 3:Input: x = 10Output: false ✅ 풀이 1: 배열을 이용한 직관적인 방법💡 아이디어..

Algorithm/LeetCode 2025.04.10

JavaScript 자료형별 반복문과 형변환 정리

알고리즘 문제를 풀다 보면 다양한 데이터 타입을 마주하게 됩니다.특히 Array, Object, Map, Set은 자주 사용되며,타입마다 반복하는 방식과 형변환 방법이 다르기 때문에 정리해 두는 것이 중요합니다.이 글에서는 각 타입별 반복 방식과 타입 간 형변환 예제를 정리해봅니다.📌 1. Array (배열)✅ 반복문const arr = [1, 2, 3];// forfor (let i = 0; i { console.log(idx, val);}); 📌 2. Object (객체)✅ 반복문const obj = { a: 1, b: 2, c: 3 };// for...infor (const key in obj) { console.log(key, obj[key]);}// Object.keysObject.ke..

2Sum과 3Sum 문제 접근 방법 및 시간복잡도 분석

코딩 테스트에서 자주 등장하는 문제 유형 중 하나가 2Sum과 3Sum 문제입니다. 이 문제들은 배열 내에서 특정 조건을 만족하는 숫자 조합을 찾는 문제로, 효율적인 접근 방식이 중요합니다.🔹 1. 2Sum 문제 접근 방식문제 개요:주어진 정수 배열 nums에서, 두 숫자의 합이 target이 되는 인덱스 쌍을 찾는 문제입니다.같은 요소를 두 번 사용할 수 없으며, 중복된 결과를 허용하지 않습니다.접근 방식 및 시간복잡도: 1️⃣ Brute Force (완전 탐색) → O(N²)모든 두 숫자의 조합을 확인하는 방법.❌ O(N²)으로 입력 크기가 커지면 비효율적코드 예시:function twoSum(nums: number[], target: number): number[] { for (let i =..

Algorithm 2025.04.04

슬라이딩 윈도우(Sliding Window) 알고리즘 개념-고정크기,가변크기,투포인터 슬라이딩 윈도우

연속된 구간(부분 배열 또는 부분 문자열)을 다룰 때 사용되며, O(n)의 시간 복잡도로 효율적인 문제 해결이 가능합니다.🔹 슬라이딩 윈도우 알고리즘 개념💡 일반적인 접근법초기 윈도우를 설정 (길이 k의 첫 번째 부분 배열 또는 문자열)윈도우를 한 칸씩 이동하면서 이전 값은 제거하고 새로운 값을 추가필요한 계산을 업데이트 (예: 합, 평균, 최대값, 최소값 등)모든 윈도우에 대해 최적값을 찾음💡 시간 복잡도단순 O(n * k) 브루트포스 접근법을 O(n)으로 최적화할 수 있음모든 원소를 한 번씩만 처리하므로 O(n)🔹 슬라이딩 윈도우 알고리즘 유형1️⃣ 고정 크기(Fixed Size) 슬라이딩 윈도우📌 길이가 k인 고정된 윈도우를 이동시키며 계산하는 방식📌 대표 문제: 최대/최소 합, 평균, ..

Algorithm 2025.04.02

[HackerRank] 두 집합 사이/Between Two Sets

문제 설명두 개의 정수 배열이 주어집니다.다음 두 가지 조건을 만족하는 모든 정수를 찾아 개수를 반환하세요.1️⃣ 배열 a의 모든 요소가 해당 정수의 약수여야 한다.즉, 그 정수는 a의 모든 요소로 나누어 떨어져야 합니다.2️⃣ 해당 정수는 배열 b의 모든 요소의 약수여야 한다.즉, b의 모든 요소는 그 정수로 나누어 떨어져야 합니다.이러한 숫자들을 두 배열 사이에 있는 숫자(between the sets) 라고 합니다.이 숫자들의 개수를 반환하면 됩니다.입력 형식첫 번째 줄에는 두 개의 정수 n과 m이 주어집니다. (n은 배열 a의 크기, m은 배열 b의 크기)두 번째 줄에는 n개의 정수로 이루어진 배열 a가 주어집니다.세 번째 줄에는 m개의 정수로 이루어진 배열 b가 주어집니다.제한 조건출력 형식두 ..

[프로그래머스] 기지국 설치-JS-접근법-문제풀이

문제 설명N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5g 기지국은 4g 기지국보다 전달 범위가 좁아, 4g 기지국을 5g 기지국으로 바꾸면 어떤 아파트에는 전파가 도달하지 않습니다.예를 들어 11개의 아파트가 쭉 늘어서 있고, [4, 11] 번째 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 만약 이 4g 기지국이 전파 도달 거리가 1인 5g 기지국으로 바뀔 경우 모든 아파트에 전파를 전달할 수 없습니다. (전파의 도달 거리가 W일 땐, 기지국이 설치된 아파트를 기준으로 전파를 양쪽으로 W만큼 전달할 수 있습니다.)이때, 우리는 5g 기지국을 최소..

[프로그래머스] DFS/BFS > 여행경로 /JS / 접근법, 문제풀이

문제 설명주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다.항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요.제한사항모든 공항은 알파벳 대문자 3글자로 이루어집니다.주어진 공항 수는 3개 이상 10,000개 이하입니다.tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다.주어진 항공권은 모두 사용해야 합니다.만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다.모든 도시를 방문할 수 없는 경우는 주어지지 않습니다.입출력 예예제 #1["ICN", "JFK", "HND", "IAD"]..

[프로그래머스] DFS/BFS > 단어변환 /JS / 접근법, 문제풀이

문제 설명두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다.1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다.2. words에 있는 단어로만 변환할 수 있습니다.예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변환할 수 있습니다.두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 변환할 ..

[프로그래머스] DFS/BFS > 게임 맵 최단거리 /JS / 접근법, 문제풀이

문제https://school.programmers.co.kr/learn/courses/30/lessons/1844?language=javascript 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다.지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다.위 그림에서 검은색 부분..

[DFS 문제] 그래프 탐색 / 연결 요소의 개수 찾기

그래프 탐색 (예상 소요 시간: 15~20분) 🔹 문제: 연결 요소의 개수 찾기  N개의 노드와 M개의 간선이 있는 무방향 그래프에서 연결 요소(연결된 노드 집합)의 개수를 구하시오. 입력 예시:console.log(solution(6, [ [0, 1], [0, 2], [3, 4]])); // 출력: 3  풀이6개의 노드가 있고, 간선으로 연결된 노드는 아래와 같다:0-1-2 (하나의 연결 요소)3-4 (두 번째 연결 요소)5는 독립적으로 존재 (세 번째 연결 요소)방문하지 않은 노드부터 DFS나 BFS를 시작하고, 그 노드와 연결된 모든 노드를 탐색한다.각 연결 요소를 찾을 때마다 연결 요소 개수를 증가시킨다.function solution(n, edges) { let coun..