반응형

프로그래머스 39

프로그래머스: 등산코스 정하기 - 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라는 숫자이기도 하다. 즉, ..

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

문제 출처 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 의 이동경로라는 것이다. 이 이동경로를 아래 사진을 눈으로 따라가보자.  기존 이진트리의 부모 노드 =>..

프로그래머스: 표 편집 - 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들을 만든다.   - 이때, 연결을..

프로그래머스: [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만큼만 제거한다.     - ..

프로그래머스: 다단계 칫솔 판매 - javascript(구현 및 dfs)

깔끔한 문제였던 것 같다... 내가 풀었기 때문에 ^^ 좋은 문제인 것 처럼 느껴짐 ㅎㅎ  문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이 힌트  1) 객체를 2개 생성 - 각 사람을 index로 활용하기 위한 map 객체 - 각 사람을 key로, 추천인을 value로 한 map 객체   2) 현재 사람의 이익을 계산하는 함수 - 현재 사람은 90% 를 가지고, 다음 추천인에게는 절사한 10%를 준다. => 즉, 추천인의 10%..

프로그래머스: 징검다리 건너기 - javascript(이분탐색)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/64062문제 풀이 힌트  단순하게 반복문으로,1) 현재 디딤돌 배열로 사람 하나 건널 수 있는지 체크 - 디딤돌 숫자가 0인 것이 연속적으로 k이상이 되면 못건넘 2) 건넜다면 각 디딤돌 숫자 -1 , 건넌 사람 수인 cnt + 13) 건너지 못했다면 그동안 건넌 친구 cnt return 하기  의 방법을 생각했다면 바로 시간 초과다.   stones 배열의 크기도 엄청난데, 디딤돌 숫자가 2억까지도 가능하다니,,, 그러면 모든 디딤돌이 2억일 때, 나는 각 배열에서 사람 하나 건널 때 -1을 2억번 해야 한다.   자, 이분탐색으로 시선을 바꿔보자.  단순 반복문으로 생각할 때는 기준이 ..

프로그래머스: 보석 쇼핑 - javascript(슬라이딩 윈도우)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트  슬라이딩 윈도우를 이용하자. 반복문 2개를 활용하면 되는데- 큰 반복문 : 윈도우 사이즈를 보석 종류 개수부터 시작해서 1씩 크게 한다. - 그 안에 작은 반복문: 해당 윈도우 사이즈 만큼 gems를 전체 돌아다니면서 조건을 만족하는지 확인한다. 조건은, Set 객체를 활용한다.  정답 풀이 코드 function solution(gems) { let set = [....

프로그래머스: 불량 사용자 - javascript(정규식, 완전탐색(dfs), 중복제거 Set)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이 힌트  정답 풀이 코드 function solution(user_id, banned_id) { const selected = Array(user_id.length).fill(false); //user_id를 선택했는지 체크하는 함수 const regex = banned_id.map(id => new RegExp(`^${id.replaceAll('*', '.')}$`))..

반응형