본문 바로가기
Algorithm/Programers13
프로그래머스 부대복귀 javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정점 사이의 간선의 길이가 1로 정해져 있다. 이게 유동적이면 bfs로 해결할 수 없지만 (다익스트라, 플로이드 와샬 등 사용으로 해결) 1로 일정하기에 bfs로 풀었다. 1. graph에 경로들을 담아두고 2. bfs 돌리면서 visited의 최소 시간으로 방문한 값을 저장하다. 3. map 돌리면서 출력 function solution(n, roads, sources, destination) { const graph = new Array(n+1).fill(null).map(_=>[]); for(let [a.. 2022. 10. 23.
프로그래머스 카운트 다운 javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr dp를 사용해서 [50, *1, *2, *3] 4가지 경우의 수를 따져보면 된다. target은 최대 10만이므로 dp 배열은 넉넉하게 30만으로 만들어줬다. 다트 던지는 횟수는 늘어남으로 현재 dp 위치 던진 다트 개수 + 1을 dp의 얻은 점수 위치와 비교한다. 만약현재 "dp 위치 던진 다트 개수 + 1" 이 더 작으면 교체한다. 만약 같다면 싱글과 볼을 최대한 많이 던지는 방법을 찾아야 하므로 싱글과 볼 일때 카운트를 +1 해서 둘중에 큰값을 삽입한다. if(dp[i+(addIdx)][0] === dp.. 2022. 10. 10.
프로그래머스 멀리 뛰기 javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 점화식은 dp[i] = dp[i-1] + dp[i-2] 이다. function solution(n) { var answer = 0; const dp = new Array(n).fill(0); dp[0] = 1; dp[1] = 2; for(let i = 2; i < n; i++){ dp[i] = (dp[i-1] + dp[i-2]) % 1234567; } return dp[n-1]; } 조금 반대로 풀게 되면 아래와 같은 코드로도 가능하다. function solution(n) { var answer = 0; c.. 2022. 9. 5.
프로그래머스 방문 길이 javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 0,0에서 위, 오른쪽, 아래, 왼쪽 으로 가는데 평범한 탐색 문제인줄 알고 2d array로 방문체크를 하려했는데 set을 사용하는게 더 편할거 같아 바꿨습니다. set에 추가하는데 a점에서 b점으로 가는경우와 b점에서 a점으로 가능 경우 둘 다 저장했습니다. function solution(dirs) { var answer = 0; const isValid = (x,y) => 0 2022. 9. 3.
프로그래머스 숫자 블록 javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소수를 구하는 문제이다. 그렙시는 길이가 1,000,000,000인 도로에 1번 블록부터 시작하여 "10,000,000"번 블록까지 구하는 문제이다. "10,000,000"번 블록까지 구하는 것이기에 "10,000,000" 블록을 넘어가는 수에 대해서는 연산하지 않으면 된다. 해당 부분이 없으면 효율성에서 에러가 났다. function solution(begin, end) { const answer = []; const isPrime = (i) =>{ const sqrt = Math.sqrt(i); for(l.. 2022. 9. 3.
프로그래머스 N-Queen javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은 서로를 한번에 공격 할 수 없습니다. 체스판의 가로 세로의 세로의 길이 n이 매개변수로 주어질 때, n개의 퀸이 조건에 만족 하도록 배치할 수 있는 방법의 수를 return하는 solution함수를 완성해주세요. 제한사항 퀸(Queen)은 가로, 세로, 대각선으로 이동할 수 있습니다. n은 12이하의 자연수 입니다. .. 2022. 8. 28.
프로그래머스 줄 서는 방법 javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람이 있다면 다음과 같이 6개의 방법이 있습니다. [1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1] 사람의 수 n과, 자연수 k가 주어질 때, 사람을 나열 하는 방법을 사전 순으로 나열 했을 때, k번째 방법을 return하는 solution 함수를 완성.. 2022. 8. 28.
프로그래머스 등산 코스 정하기 javascript , python 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 파란색 정점이 입구, 빨간색 정점이 산봉우리, 검은색 정점은 쉼터이다. 각 정점사이의 간선은 걷는 시간을 의미한다. 입구에서 산봉우리까지 갔다가 다시 돌아올 때 해당 루트가 지나간 간선들의 최대값이 가장 작은 루트를- 구하여라. 루트는 여러가지가 있다. 1 => 2 => 4 => 5 => 4 => 2 => 1 // 각 사이의 간선은 [3, 2, 3, 3, 2, 3] // 간선들의 최대 값은 3 1 => 2 => 4 => 6 => 5 => 4 => 2 => 1 // 각 사이의 간선은 [3, 2, 1, 1, 3,.. 2022. 8. 23.
카펫 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 빨간색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 빨간색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 빨간색 격자의 수 red가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 빨간색 격자의 수 red는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다. 입출력 .. 2020. 4. 10.
문자열 압축 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 aabbaccc의 경우 2a2ba3c(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, abcabcdede와 같은 문자열은 전혀 압축되지 않습니다. 어피치는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘라서 압축하여 더.. 2020. 4. 10.
124 나라의 숫자 124 나라의 숫자 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. function solution(n) { let input = n; var answer = []; let realAnswer = []; let arr = [1,2,4]; while(input){ answer.unshift(input%3) input = Math.floor(input/3) } for(let i = answer.length-1; i>0;i--){ if(answer[i] realAnswer.push(arr[v-1])) return realAnswer.join('').. 2020. 4. 10.
비밀지도 비밀지도 function solution(n, arr1, arr2) { var answer = []; let a = arr1.map((v,index)=>{ let a1 = v.toString(2).slice(0,n) let a2 = arr2[index].toString(2).slice(0,n) let result = (parseInt(a1) + parseInt(a2)).toString() console.log(result.length) while(result.length v > 0 ? "#" : " " ).join('') }) return a; } 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받.. 2020. 4. 10.