알고리즘 테스트 ⏲/프로그래머스
-
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr lv3. 가장 먼 노드 접근한 방법 BFS를 이용해서 빠르게 해결할 수 있습니다. 주의할 점은 간선 저장 시 인접 행렬을 사용할 경우 시간이 초과됩니다. 노드 보다 간선이 적을 경우 매우 비효율적이므로 상대적으로 탐색에 더 효율적인 인접 리스트를 사용합니다. 간선을 저장했다면 큐를 이용해서 노드(now)와 간선 길이(cnt)를 관리합니다. JavaScript에서는 별도의 큐 라이브러리가 없으므로 shift 메서드를 사용하고 문제에는 영향이 없지만 비효율적이라 싫다면 front를 가리키는 포인터를 설정하여 큐 ..
[프로그래머스] lv3. 가장 먼 노드풀이 / Python, JavaScript프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr lv3. 가장 먼 노드 접근한 방법 BFS를 이용해서 빠르게 해결할 수 있습니다. 주의할 점은 간선 저장 시 인접 행렬을 사용할 경우 시간이 초과됩니다. 노드 보다 간선이 적을 경우 매우 비효율적이므로 상대적으로 탐색에 더 효율적인 인접 리스트를 사용합니다. 간선을 저장했다면 큐를 이용해서 노드(now)와 간선 길이(cnt)를 관리합니다. JavaScript에서는 별도의 큐 라이브러리가 없으므로 shift 메서드를 사용하고 문제에는 영향이 없지만 비효율적이라 싫다면 front를 가리키는 포인터를 설정하여 큐 ..
2023.06.04 -
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Lv2. 리코쳇 로봇 접근한 방법 이런 유형의 최단 거리 문제는 대부분 BFS로 해결되는데 조건이 조금 특이합니다. 한번 이동 시 벽 또는 장애물이 있을 때까지 계속 들어가야 합니다. 벽이나 장애물을 만나면 그 이전 칸에서 멈춰야 하므로 이 부분에서 이동했던 한칸을 다시 되돌려줘야 합니다. 큐와 방문여부를 담은 배열을 만들어 BFS로 해결합니다. Python은 덱 라이브러리를 사용하면 되고 JavaScript에서는 별도의 라이브러리가 없어 배열로 풀이합니다. 큐에서 row, column 정보를 담은 원소를 꺼..
[프로그래머스] 리코쳇 로봇 풀이 / Python, JavaScript프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Lv2. 리코쳇 로봇 접근한 방법 이런 유형의 최단 거리 문제는 대부분 BFS로 해결되는데 조건이 조금 특이합니다. 한번 이동 시 벽 또는 장애물이 있을 때까지 계속 들어가야 합니다. 벽이나 장애물을 만나면 그 이전 칸에서 멈춰야 하므로 이 부분에서 이동했던 한칸을 다시 되돌려줘야 합니다. 큐와 방문여부를 담은 배열을 만들어 BFS로 해결합니다. Python은 덱 라이브러리를 사용하면 되고 JavaScript에서는 별도의 라이브러리가 없어 배열로 풀이합니다. 큐에서 row, column 정보를 담은 원소를 꺼..
2023.05.05 -
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(maps) { maps = maps.map(m => m.split("")); const drow = [-1, 1, 0, 0]; const dcol = [0, 0, -1, 1]; let sr, sc, er, ec, lr, lc; for (let i = 0; i < maps.length; i += 1) { for (let j = 0; j < maps[0].length; j += 1) { if (maps[i][j] === "S") [sr, sc] =..
[프로그래머스] 미로 탈출 풀이 / JavaScript프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(maps) { maps = maps.map(m => m.split("")); const drow = [-1, 1, 0, 0]; const dcol = [0, 0, -1, 1]; let sr, sc, er, ec, lr, lc; for (let i = 0; i < maps.length; i += 1) { for (let j = 0; j < maps[0].length; j += 1) { if (maps[i][j] === "S") [sr, sc] =..
2023.04.14 -
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(cards) { const visited = Array(cards.length + 1).fill(0) visited[0] = 1 let [group, result] = [[], []] let idx = cards[0] while (1) { if (visited.indexOf(0) === -1) { // 더이상 방문할 원소가 없는 경우 result.push(group) break } else if (!visited[idx]) { // 방문하지 않..
[프로그래머스] 혼자 놀기의 달인 풀이 / JavaScript프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(cards) { const visited = Array(cards.length + 1).fill(0) visited[0] = 1 let [group, result] = [[], []] let idx = cards[0] while (1) { if (visited.indexOf(0) === -1) { // 더이상 방문할 원소가 없는 경우 result.push(group) break } else if (!visited[idx]) { // 방문하지 않..
2023.04.14 -
작성 코드 (1차 시도 / 통과) function solution(weights) { let result = 0 const table = Array(4001).fill(0) const isInt = (n) => n % 1 === 0 ? n : 0 // 실수 판별 weights.forEach(w => { result += table[w] + table[w * 2] // case 1, case 2 if (isInt(w / 2)) result += table[w / 2] // case 3 if (isInt(w * 2 / 3)) result += table[w * 2 / 3] // case4 if (isInt(w * 3 / 2)) result += table[w * 3 / 2] // case5 if (isInt..
[프로그래머스] 시소 짝꿍 풀이 / JavaScript작성 코드 (1차 시도 / 통과) function solution(weights) { let result = 0 const table = Array(4001).fill(0) const isInt = (n) => n % 1 === 0 ? n : 0 // 실수 판별 weights.forEach(w => { result += table[w] + table[w * 2] // case 1, case 2 if (isInt(w / 2)) result += table[w / 2] // case 3 if (isInt(w * 2 / 3)) result += table[w * 2 / 3] // case4 if (isInt(w * 3 / 2)) result += table[w * 3 / 2] // case5 if (isInt..
2023.04.14 -
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(sequence, k) { let [l, r] = [0, 0] let summed = sequence[l] // 현재 쌓여있는 합 (l~r위치 값의 합) const candidate = [] // 답안 후보 while (r k) summed -= sequence[l++] /..
[프로그래머스] 연속된 부분 수열의 합 풀이 / JavaScript프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(sequence, k) { let [l, r] = [0, 0] let summed = sequence[l] // 현재 쌓여있는 합 (l~r위치 값의 합) const candidate = [] // 답안 후보 while (r k) summed -= sequence[l++] /..
2023.04.13