반응형

JS 142

프로그래머스: 등산코스 정하기 - 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 문제 풀이 힌트 이 문제는 주어진 숫자를 이진수로 변환하고, 이를 포화 이진 트리 형태로 만들 수 있는지를 확인하는 문제다.  - 각 숫자를 이진수로 변환한 후, 필요한 더미 노드를 추가하여 포화 이진 트리 형태로 만든다. - 트리의 중간 노드를 기준으로 왼쪽과 오른쪽 서브트리를 재귀적으로 검사하여 유효한 트리 구조인지 확인한다. - 더미 노드가 실제 노드를 자식으로 가질 수 없기 때문에..

프로그래머스: 기둥과 보 설치 (빡센 구현)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/60061 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트 이 코드는 기둥과 보의 설치 및 삭제 명령을 처리하여 최종 구조물을 결정한다 !  1) 각 구조물의 상태를 문자열 키로 변환하여 Set에 저장하고, 설치 및 삭제 명령에 따라 유효성을 확인2) 설치 명령은 조건을 만족할 때만 구조물을 추가하고,3) 삭제 명령은 임시로 구조물을 제거한 후 모든 구조물이 유효한지 확인한다. 4) 최종적으로 구조물 리스트를 좌표와 구조물 종류에 ..

프로그래머스: 양과 늑대 - javascript(back이 가능한 dfs)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트 신박한 문제였다.자신과 연결된 자식 node로 이동할 수 있는 것은 기본으로 + 다시 부모 노드를 통해 다른 node로 이동이 가능하다.   무슨 말이냐?  문제에 최적의 이동경로가 이렇다고 말해준다.  즉, 0 => 1=> 8 => 7 => 9 => 4 => 6 =>5 의 이동경로라는 것이다. 이 이동경로를 아래 사진을 눈으로 따라가보자.  기존 이진트리의 부모 노드 =>..

찜 버튼 컴포넌트 분리하기

01. 찜 버튼 컴포넌트화 필요성 찜 버튼을 원래 상세페이지에 구현했었다.  하지만 찜 버튼을 컴포넌트화 하기로 했다.  왜냐하면,,,, ?  상세페이지에 지금 온갖 기능이 다 들어가있다. - 공연 정보 - 리뷰 기능 - 찜 버튼등등...  말 그대로 코드가 내 컨트롤의 영역에서 벗어나기 일보 직전이다. 아마 이미 벗어난 것 같다.  그래서 기능을 더 추가하기 전에 내 코드들을 기능별로 분리해서 가독성을 높이는 작업이 필요하다고 느꼈다.  두번째 이유는 재사용성이다. 우아한형제들 페이지에는 온갖 곳에 찜 버튼을 해놨는데 참 편했다. (나도 찜 버튼을 여러곳에 둬야겠다. ) 세번째 이유는 유지보수성이다. 내가 애정을 갖고 있는 프로젝트이기도 하고, 이 웹의 유저에게 다양한 기능을 제공할 수 있기 때문에 정..

프로그래머스: 표 편집 - javascript(양방향 연결리스트)

문제 풀이 출처 https://school.programmers.co.kr/learn/courses/30/lessons/81303 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트 양방향 연결 리스트 를 활용한다. 연결리스트를 모른다면 아래 영상을 가볍게 시청하고 오면 코드가 쉽게 읽힌다. (나도 그랬다..)https://www.youtube.com/watch?v=K1PlysPgNZY연결리스트큰 틀은 이렇다. 01. 객체를 생성하는 생성자 함수를 정의한다.  02. 생성자 함수를 활용해서 주어진 n만큼의 node들을 만든다.   - 이때, 연결을..

프로그래머스: 합승 택시 요금 - javascript(플로이드 와샬 알고리즘)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/72413 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트  플로이드 와샬 알고리즘을 사용하면 참 간단한 문제다 !  코드는 간단한데, 주석을 작성하느라 좀 길어졌다.  정답 풀이 코드 function solution(n, s, a, b, fares) { //해당 node => node 로 향하는 최소 비용을 갱신할 2차원 배열 생성 const board = Array.from({length: n}).map(() => new A..

프로그래머스: [1차]셔틀버스 - javascript(센스있는 구현)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/17678 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이 힌트 1) 주어진 timetable의 시간들을 분으로 나타내고, 오름차순 정렬하자. 2) 버스가 n회 오니까 반복문을 n만큼 돌린다. - 현재 시간 9:00 를 540으로 계산한다. - 현재 시간 540보다 일찍 온 크루들이 몇명인지 센다.(canRide)      - 만약 이 크루들이 m명보다 많을 때?       => timetable에서 0부터 m만큼만 제거한다.     - ..

반응형