본문 바로가기
  • 살짝 구운 김 유나

Algorithm63

[Lv.2] 석유 시추 - JavaScript 문제 https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 각 영역에 대해 너비 우선 탐색을 하며 석유가 있는 영역에 oilId를 부여한다. oilId를 key로, 영역의 크기를 value로 하는 자료를 저장한다. 이차원 배열에 oilId를 값으로 갖는 석유 지도(?)를 만든다. 세로로 한 줄씩 순회하며 마주치는 석유 영역의 크기를 합산한다. 단, 이전에 합산했던 석유 영역은 건너뛰어야 한다. 코드 function solution(land) .. 2024. 1. 4.
[Lv.2] 메뉴 리뉴얼 - JavaScript (feat. combination) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 순열 공부하면서 조합은 공부 안했던 사람,,, JS로 조합! 공부해자,, 주어진 코스별 가능한 조합을 찾는다. 그 중에서 2번 이상 주문된 조합을 찾는다. 또 그중에서 가장 많이 주문된 경우를 찾는다.. 그냥 문제에서 하라는대로 한다... 조합 구하기! // 조합을 구하는 함수 const combination = (arr, n) => { // 배열의 길이가 1일 때는 자기 자신을 담은 .. 2023. 6. 11.
[Lv.3] 택배 마스터 광우 - JavaScript (근데 이제 Permutation을 곁들인..) 외... JS로 소프티어 푸는 사람 없는건대,,, 구글에 검색해도 잘 안나와서 넘 외롭다,,, 순열! 구하기! const permutation = (arr, num) => { // 길이가 1일때는 자기 자신이 담긴 리스트 반환 if(arr.length === 1) return [arr] const res = [] arr.forEach((v, idx, arr) => { // 현재 인덱스에 해당하는 원소를 제외, 나머지 원소로 이루어진 rest 배열 생성 const rest = [...arr.slice(0, idx), ...arr.slice(idx+1)] // rest 배열의 조합 구하기 const permutations = permutation(rest , num-1) // 현재 인덱스를 배열의 가장 앞쪽.. 2023. 6. 2.
[Lv.2] 주차 요금 계산 - JavaScript 문제 https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 한 차량이 주차장을 여러번 방문했을 경우도 생각해야 한다. 한 번 이용했을 때의 시간들을 계산해서 리스트의 형태로 관리해야 하는 문제! 그 외에는 하라는 대로 하면 되는 문제이다. 자세한 설명은 주석 참고~̆̈ 코드 function solution(fees, records) { var answer = []; let bill = {}; records.forEach((record) => {.. 2023. 5. 9.
[Lv.2] 이모티콘 할인행사 - JavaScript 문제 https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. 모든 경우의 할인율 조합을 구한다. 2. 할인율 조합, users, emoticons 세가지로 3중 for문을 돌면서 각 경우에 대한 [가입자수, 판매액] 값을 구한다. 2. 가입자수가 많은, 판매액이 높은 순으로 다중 조건 정렬을 수행한다. 코드 function solution(users, emoticons) { const len = emoticons.length; // 모든 .. 2023. 5. 8.
[Lv.2] 과제 진행하기 - JavaScript 문제 https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (programmers의 질문하기 답변 참고) 1. 과제 목록의 시간을 분단위의 숫자로 변환하여 시작시간이 빠른 순서대로 정렬한다. 2. 현재 시간을 1분씩 증가시키면서 2-1. 시작해야 할 과제가 있다면 스택에 삽입한다 2-2. 그렇지 않다면 스택의 맨 마지막 원소 과제를 1분씩 진행한다. 이때, 진행중인 과제가 완료되면(시간이 0이 된 경우) 과목명을 answer에 추가한 후 po.. 2023. 4. 22.
[LV.2] 요격시스템 - JavaScript 문제 https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 function solution(targets) { // 요격 횟수 var answer = 0; // 구간의 시작을 중심으로 오름차순 정렬 targets.sort((a, b) => a[0] - b[0]); let point = 0; // 범위의 끝을 기억하는 변수 targets.forEach((target) => { // 일단 한발 쏘기 answer++; // 미사일 구간이 이전에 쏜.. 2023. 4. 17.
[Lv.2] 리코쳇로봇 - JavaScript 문제 https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 - 최단거리를 구하는 문제이므로 BFS를 이용한다. - 단순 너비우선과 달리 4방향을 탐색하면서 while문을 사용하여 미끄러져야 한다. - 다른 방향으로 미끄러질 수 있으므로 벽에 부딪히거나 장애물을 만났을때 멈춘 좌표만 방문처리를 해주자. 코드 function solution(board) { var answer = 0; const rows = board.length; const c.. 2023. 4. 17.
[Lv.2] 미로 탈출 - JavaScript 문제 https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 시작점에서 레버까지, 레버에서 도착점까지의 최단 거리의 합을 구한다 최단거리라 BFS 사용함 왜 이렇게 시간초과가 날까 했는데 내가 visited를 아주 비효율적으로 생성하고 있었다 어디서 본 건지는 모르겠지만,, 절대 이렇게 하면 안되고,, let visited = new Array(row) for(let i = 0; i< row;i++) { visited = new Array(co.. 2023. 4. 11.
[Lv.2] 양궁 대회 - JavaScript 문제 https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 재귀 DFS로 풀었고, 1. 라이언이 화살을 쏘는 경우 (라이언이 점수 획득) 2. 라이언이 화살을 쏘지 않는 경우 (어피치가 점수 획득 / 둘 다 쏘지 않음) 로 나눠서 풀었다. 과녁의 끝에 도달했을 때에는, 라이언과 어피치의 점수차가 현재의 최댓값보다 큰 경우에만 최대 점수 차이, 라이언의 과녁판을 갱신해주었다. !!! 점수가 가장 낮은 과녁판부터 살펴봐야 한다..!!! 코드 fun.. 2023. 3. 28.