반응형

JavaScript 209

프로그래머스:주사휘 고르기 - javascript(조합, 백트래킹, 구현)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/258709 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트 정답 풀이 코드 function solution(dice) { const len = dice.length; const groupSize = len / 2; const dices = new Array(len).fill(0).map((_,index)=>index+1) // A가 뽑을 조합의 경우를 구하는 함수 const getCombinati..

버블 정렬 알고리즘

현재 값과 다음값을 비교해서 더 큰 값을 뒤로 배치한다. => 이 과정을 반복하다 보면  가장 큰 값인 5가 맨 뒤로 가게 됐다. 이 과정을 반복해보자가장 큰 값인 4가 맨 뒤로 가게 됐다. 이 과정을 반복해보자.  이 쯤 눈치를 챘는가? 배열 전체를 통해 숫자를 비교하는 횟수가 점점 줄어들고 있다. 이유) - 한번 배열 훑는 과정거칠 때마다 가장 큰 값이 맨 뒤에 고정된다. => 그러니, 그 숫자 이전까지만 배열을 훑어주면 된다.  특징 - 시간 복잡도는 O(N^2)- 선택 정렬 알고리즘도 시간 복잡도는 O(N^2)이지만, 버블 정렬 알고리즘 수행시간이 더 오래 걸린다. => 이유: 버블 정렬은 매 순간 숫자들의 위치를 이동시키기 때문이다. 선택 정렬은 전체 배열 훑은 다음에 가장 작은 값을 맨 앞에 ..

프로그래머스: 매칭 점수 - javascript (정규식 끝끝판왕...)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/42893 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트 01. /[\d|\W]/- [] : 문자 클래스를 정의 . 문자 클래스는 대괄호 안에 있는 문자들 중 하나와 일치하는지 검사- \d : 숫자를 의미. [0-9]와 동일하게 작동, 숫자 하나와 일치. - | : 또는 을 의미하는 논리 연산자 인데, 문자 클래스 내에서 사용되었기 때문에 단순히 문자 '|' 자체로 간주됨. - \W: 비문자 (숫자, 영문자, 밑줄이 아닌 문자)...

프로그래머스: 산 모양 타일링 - javascript(dp)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/258705 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트 정답 풀이 코드 function solution(n, tops) { const MOD = 10007; const dp = new Array(n + 1).fill().map(() => new Array(2).fill(0)); dp[0][0] = 1; for (let i = 0; i Only 풀이 코드 function solution(n, tops) { const M..

선택 정렬 알고리즘

선택 정렬 알고리즘 - 정렬 알고리즘 중 하나. - 배열을 반복적으로 순회하여 가장 작은(혹은 가장 큰) 요소를 찾아 맨 앞의 요소와 교환하는 방식으로 정렬합니다. 선택 정렬 알고리즘 설명첫 번째 위치에 대해:배열에서 가장 작은 요소를 찾아 첫 번째 요소와 교환합니다.두 번째 위치에 대해:첫 번째 요소를 제외한 나머지 배열에서 가장 작은 요소를 찾아 두 번째 요소와 교환합니다.이 과정을 마지막까지 반복:배열 전체가 정렬될 때까지 이 과정을 반복합니다.  선택 정렬 알고리즘 구현 function selectSort(arr){ for(let i=0; i arr[j]){ min = j; } } let temp = arr[i]; ..

프로그래머스 : 블록 이동하기 - javascript (bfs)

## 문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/60063 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr ## 문제 풀이 힌트 출제 의도: BFS에 대해 알고 있고, 이를 응용해(단순 암기가 아니라) 코드를 작성할 수 있는지 파악  세팅 1) 이차원 그래프 새로 생성하기  - 좌표 자체가 1,1로 시작하고, n,n 을 구해야 하기 때문에 코드 편의성을 위해 n+2, n+2 그래프로 생성.   - 전체를 벽인 1로 세팅한 후, 주어진 board 값에 맞춰서 0인 값으로 다시 넣어준다. 2)..

프로그래머스: 등산코스 정하기 - javascript (다익스트라 알고리즘 )

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/118669 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트 코드 설명 요약그래프 초기화:주어진 경로를 통해 각 노드의 인접 리스트를 생성합니다.최소 힙과 강도 배열 초기화:MinHeap을 사용하여 각 게이트를 큐에 추가하고, 모든 지점에 대해 강도 값을 무한대로 설정합니다.다익스트라 알고리즘 변형:최소 힙을 사용하여 현재 노드에서 인접한 노드로의 경로 중 최대 강도가 가장 작은 경로를 탐색합니다.서밋에 도달하거나 이미 더 낮은 강..

프로그래머스: 외벽 점검 - javascript(깔쌈한 구현 문제, 순열 활용)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/60062 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트 정말 깔~쌈한 문제라고 생각한다. 순열 구하는 함수를 안다면 바로 코드 작성하고, 구현을 잘 ~ 하면 된다.  시계방향이냐, 반시계 방향이냐? 를 고민하지 않게 만드는 건 - 일렬로 배열을 더 길게 늘려주는 것이다. => 뭐 예를 들어서 n이 12다? 그럼 0은 12라는 또 다른 숫자이기도 하다.- 1은 13이라는 숫자이기도 하다. - 2는 14라는 숫자이기도 하다. 즉, ..

js 순열과 조합 구하는 식 정리

문제를 풀 때 활용해야 할 경우가 많다. 그냥 암기하자. 순열: 순서를 고려해서 요소 선택 - 예를 들어, [1, 2, 3]의 순열은 [1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]와 같이 6가지 const getPermutation = (arr, n) => { if (n === 1) return arr.map(v => [v]); const result = []; arr.forEach((fixed, idx, origin) => { const rest = [...origin.slice(0, idx), ...origin.slice(idx + 1)]; const perms = get..

프로그래머스: 표현 가능한 이진트리 - javascript(이진트리, 포화이진트리)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/150367 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트 이 문제는 주어진 숫자를 이진수로 변환하고, 이를 포화 이진 트리 형태로 만들 수 있는지를 확인하는 문제다.  - 각 숫자를 이진수로 변환한 후, 필요한 더미 노드를 추가하여 포화 이진 트리 형태로 만든다. - 트리의 중간 노드를 기준으로 왼쪽과 오른쪽 서브트리를 재귀적으로 검사하여 유효한 트리 구조인지 확인한다. - 더미 노드가 실제 노드를 자식으로 가질 수 없기 때문에..

반응형