프로그래머스

문제 풀이 방법 최단 거리를 구하는 문제는 BFS를 이용해 풀어야 한다. 문제는 정석적인 BFS문제이며 큐를 이용해 탐색할 노드를 저장한 뒤 해단 노드의 정보를 이용해 맵의 4방향을 검증하며 방문하지 않고, 길이 있다면 move를 1더한 값과 함께 큐에 저장한다. 위의 검증을 반복하며 목표 좌표에 도달할 시에 move를 반환한다. 코드 function solution(maps) { let xLen = maps[0].length; let yLen = maps.length; let xGoal = xLen - 1; let yGoal = yLen - 1; let rotaX = [0, 0, -1, 1]; let rotaY = [-1, 1, 0, 0]; let que = [[0, 0, 1]]; while(que.l..
문제 설명 문제 풀이 방법 이 문제는 stack을 사용하며 괄호가 올바른지 확인하며 풀이했다. 또한 재귀 방식을 이용해 풀었다. 우선 주어지는 괄호 문자열의 (와 )의 갯수가 같아질 때를 찾아 u와 v로 나눈다. 그리고 나누어진 문자열이 올바른 괄호 문자열인지 확인하는 함수를 작성한다. 이 함수는 stack을 이용해 괄호 문자열이 제대로된 쌍을 갖는지 확인한 뒤 불리언 값을 반환한다. check 함수를 이용해 올바른지 여부를 확인 후 올바르 않다면 문제의 조건을 보며 코드를 작성한다. 코드 function solution(p) { // ()문자열을 올바른 괄호 문자열로 변환해주는 함수 // 빈 문자열이 들어오면 빈 문자열을 반환, // 올바른 괄호문자열이 들어오면 그대로 반환, // 올바르지 않은 괄호 ..
문제 설명 문제 풀이 방법 우선 n을 k진수로 바꾸는 것부터 시작했고, 문제 설명에서 0과 인접한 수들을 추출하는 것으로 문제를 파악하기 시작했다. 이는 split('0')을 해주면 0을 기준으로 0이 제외된 배열을 반환하게 되기에 수들의 배열을 확인할 수 있다. 그리고 filter메서드로 1과 빈 문자열을 제외해준다. 0이 제외된, 0에 인접했던 수들의 배열을 forEach메서드를 이용해 각 수들이 소수임을 확인한다. 소수가 맞다면 반환할 값에 1을 더해준다. 이렇게 더해진 값을 반환해준다. 코드 1 function solution(n, k) { let answer = 0; const num = n.toString(k).split('0').filter((e) => { return e !== '1' ? ..
문제 설명 문제 풀이 방법 이 문제를 보고 2중 배열을 이용해 풀려했지만 n의 길이가 10^7까지이므로 길어지게 된다면 런타임 에러가 날수 있다고 생각해 1차원 배열 형식으로 풀어 봤다. 우선 2차원 배열에서의 가로 세로 row와 col을 구하는 법은 구해야 하는 인덱스값을 n으로 나눈 나머지 값이 row이다. 그리고 인덱스값을 n으로 나눈뒤 floor 작업을 해준 값이 col이다. 규칙을 보면 row값이 col보다 작은거나 같은 경우는 col+1값이 되며, row가 col보다 큰 경우는 row+1값이 된다. 코드 function solution(n, left, right) { let arr = [] for(let i = left; i col){ num = row } arr.push(num + 1) } ..
문제 설명 문제 풀이 방법 나는 이 문제를 보고 dfs로 풀자는 생각을 못하고 순열을 이용해 풀려했다..... dfs로 풀어야지 완전탐색이 가능하다고 생각했지만 dfs 구현을 잘 못해서 결국 힌트를 봤다.... dfs는 각 노드별 방문여부를 체크할 수 있는 배열을 만들고 재귀를 이용해 문제를 풀어간다. 내가 낮설었던 것은 재귀한 뒤 방문여부 배열을 다시 초기화 하는 것이였다. 코드 const solution = (k, dungeons) => { // dfs로 문제를 풀면 방문하는 노드가 방문을 했었는지 기록하는 것이 중요하다. (무한 루프에 빠질 수 있음) let answer = 0; let visited = Array(dungeons.length).fill(false); const dfs = (poin..
문제 설명 문제 풀이 방법 이 문제는 filter 메서드의 사용이 중요했던 문제였던것 같다. 첫번째로 참고한 코드는 filter메서드의 사용이 중요한 코드이다. 흐름을 보면 skill_trees에서 tree들을 걸러야 되므로 1차적으로 filter메서드를 사용, 그 다음에는 skill_trees들의 각 요소 별로 skill에 있는 맨 처음 글자가 먼저 오는 방식이기에 skill에 속한 글자들이 있는 문자를 includes를 이용해 첫번째 문자를 추출한 뒤 indexOf를 이용해 skill에서의 index값이 0인 요소를 모아 길이를 반환한다. 두번째 코드는 정규식으로 풀 수 있는 코드이며 흐름을 보자면 전체 skill_trees를 map메서드를 이용해 순회해주고 각 요소별 replace메서드를 정규식과 ..
58청춘
'프로그래머스' 태그의 글 목록 (18 Page)