FrontEnd/프로그래머스
[JS] 블록 이동하기
대놓고 BFS문제이다. 생각할 점은 로봇이 1칸이 아닌 2칸짜리란 점과 회전이 가능하단점이다. https://school.programmers.co.kr/learn/courses/30/lessons/60063# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 일반적인 BFS를 기본으로 구현을 하되 2칸짜리인 점과 4방향 이동 외에 회전이동이 가능하단 점을 생각하자. 기본적으로 로봇의 위치를 생각할때 가로와 세로 두가지가 있는데 가로인 경우에는 왼쪽 부분을, 세로인 경우에는 위쪽 부분을 중심으로 생각하기로 했다. 우선 회전 기능을 생각하기 위해서 rotate..
[JS] 징검다리 건너기
문제를 푸는 접근방식은 단순했다. k범위만큼씩 자르면서 해당 범위의 최댓값중 가장 작은 값을 얻어내면 된다. [ 2, 4, 5 ] [ 4, 5, 3 ] [ 5, 3, 2 ] [ 3, 2, 1 ] [ 2, 1, 4 ] [ 1, 4, 2 ] [ 4, 2, 5 ] [ 2, 5, 1 ] 예제로 따지면 위 범위중에서 범위안의 최댓값 중 최솟값은 3이다. 따라서 정답이 3이 되게 된다! 하지만 아래와 같이 내장함수를 사용해서는 풀 수 없었다. (예상한대로) function solution(stones, k) { let ret = Infinity for (let i = 0 ; i 0 && this.ary[idx][1] > this.ary[parentIdx][1]) { this.swap(idx, parentIdx); ..
[JS] 불량 사용자
정규표현식과 set , dfs 를 활용하여 해결한 문제였다. https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정규표현식은 불량 사용자인지 아닌지를 가져오기 위해서 사용했는데 굳이 정규표현식이 아닌 반복문을 활용해서 풀었어도 상관은 없을 문제인듯 하다. 1. 정규표현식으로 banned_id마다 가능한 아이디의 조합을 가져오기 EX) TEST CASE 3 [ [ 'frodo', 'fradi' ], [ 'frodo', 'crodo' ], [ 'abc..
[JS] [카카오인턴] 보석 쇼핑
투포인터와 MAP,SET자료형을 활용하여 해결해보았다. https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 효율성 테스트가 있는 문제이기때문에 시간복잡도를 O(n)에 가깝게 풀어야 해결할 수 있을 것이라 생각했다. 문제를 접근&해결한 방식은 아래와 같다. 1. 배열을 순회하며 해당 인덱스의 보석은 무조건 포함된다고 생각 2. 그 보석이 포함된 기준으로 가장 짧은 길이를 계산 2.1 만약 모든 보석이 포함되지 않았다면 길이를 계산하지 않고 map에 ..
[JS] 경주로 건설
DP와 BFS를 적절히 활용해야 하는 재미있는 문제였다! https://school.programmers.co.kr/learn/courses/30/lessons/67259# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr dp[r][c] = r행 c열까지 도달하는데 드는 최소 비용 이라고 두자. BFS로 장애물을 피해가며 모든 경우의수를 탐색하는데, 만약 dp보다 큰 값으로 해당 칸에 도달했다면 그 경우의 수는 생각하지 않아도 괜찮다. 단 해당 문제에서는 조금 생각할만한 점이 몇가지 있다. 1. BFS에서 비용을 계산할때 직선이면 100 , 커브이면 600..
[JS] 풍선 터트리기
풍선을 터트리는 문제였다 큰 알고리즘 기법이라기 보다는 문제에서 주어진 요구를 잘 읽으면 해결할 수 있는 문제였다. 굳이 말하면 dp라고도 할 수 있을 것 같다. https://school.programmers.co.kr/learn/courses/30/lessons/68646 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 유의있게 볼만한 조건은 a의 최대길이가 1,000,000으로 이중반복문을 사용하면 안될거란 것과 a의 모든 수는 다르단 것 정도이다. 결국 나보다 작은 풍선을 한번만 터트릴 수 있다는 표현은 , 본인을 제외하고 좌측과 우측의 풍선을 모두..