전체 글 169

[프로그래머스] 가장 큰 정사각형 찾기 (Lv 2) - javascript

📝 문제 1와 0로 채워진 표(board)가 있습니다. 표 1칸은 1 x 1 의 정사각형으로 이루어져 있습니다. 표에서 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하는 solution 함수를 완성해 주세요. (단, 정사각형이란 축에 평행한 정사각형을 말합니다.) 예를 들어, 아래 표는 9를 반환합니다. 제한사항 표(board)는 2차원 배열로 주어집니다. 표(board)의 행(row)의 크기 : 1,000 이하의 자연수 표(board)의 열(column)의 크기 : 1,000 이하의 자연수 표(board)의 값은 1또는 0으로만 이루어져 있습니다. 🤔 나의 풀이 function solution(board) { let answer = 0; for(let i = 0; i < board.len..

Coding test 2022.06.11

[프로그래머스] 줄서는 방법 (Lv 2) - javascript

문제 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 함수를 완성해주세요. 제한사항 n은 20이하의 자연수 입니다. k는 n! 이하의 자연수 입니다. 나의 풀이 function solution(n, k) { // 1~n 나열된 arr 생성 let arr = []; fo..

Coding test 2022.06.10

[알고리즘] 하노이의 탑 - javascript

A에 있는 모든 원반을 B로 옮기는 횟수의 최소값을 구하는 알고리즘 제한조건 작은 원반 위에 큰 원반이 올라갈 수 없다. 한 번에 원반 하나만 옮길 수 있다. 🔑 설명 얄팍한 코딩사전님의 영상이 큰 도움이 되어 가져왔다. 아래 영상을 시청하고 설명을 읽으면 이해가 쉽다. B로 원반을 옮기려면, 가장 큰 원반이 맨 아래로 가는 것이 첫번째 순서다. 이게 가능하려면 그 위 원반들이 C로 옮겨져야 한다. 그래야 맨 아래 원반을 B로 옮길 수 있기 때문이다. 그들을 C로 옮기는 과정은 다시 위 과정을 반복한다. 위 과정과 똑같이 맨 아래 파란색 원반을 목적지로 옮기는 것이 우선이다. (보라색 맨 아래 원반을 없다고 생각하면 쉽다) 그러려면 위쪽 원반이 B에 순서대로 쌓여야 한다. 그래야 파란색 원반을 옮길 수 ..

[프로그래머스] 멀리 뛰기 (Lv 2) - javascript

문제 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다. 제한 사항 n은 1 이상, 2000 이하인 정수입니다. https://programmers.co.kr/learn/courses/30/lessons/12914 📝 풀이 f..

Coding test 2022.06.10

[프로그래머스] 삼각달팽이 (Lv 2) - javascript

문제 정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요. 프로그래머스 📝 풀이 function solution(n) { let answer = Array.from({length: n}, (v,idx) => new Array(idx+1).fill(0)); let count = 0; let x = -1; let y = 0; while(n > 0) { for(let i = 0; i < n; i++) answer[++x][y] = ++count; for(let i = 0; i < n-1; i++) ..

Coding test 2022.06.10

[프로그래머스] 교점에 별 만들기 (Lv 2) - javascript

문제 Ax + By + C = 0으로 표현할 수 있는 n개의 직선이 주어질 때, 이 직선의 교점 중 정수 좌표에 별을 그리려 합니다. 문제 더보기 🔑 크라메르 법칙 크라메르 법칙은 유일한 해를 가지며 변수와 방정식의 수가 같은 연립 일차 방정식의 해를 구하는 공식이다. 두 직선의 교점이 유일하게 존재한다면, 이 공식을 이용할 수 있다. ax + by = e cx + dy = f 교점 만약 아래와 같이 주어졌다면? ax + by + e = 0 cx + dy +f = 0 교점 (위와 동일한 식임) AD - BC = 0 이면, 교점 없음 (기울기가 같다는 말 => 평행 or 일치) 📝 1차 풀이 (실패) function solution(line) { let dots = []; line.forEach((v,id..

Coding test 2022.06.09

[프로그래머스] 피로도 (Lv 2) - javascript

문제 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다. 이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러개 있는데, 한 유저가 오늘 이 던전들을 최..

Coding test 2022.06.08

[프로그래머스] 전력망을 둘로 나누기 (Lv 2) - javascript

📝 문제 n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있습니다. 당신은 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다. 이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다. 송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때, 두 전력망이 가지고 있는 송전탑 개수의 차이(절대값)를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 2 이상 100 이하인 자연수입니다. wires는 길이가 n-1인 정수형 2차원 배열입니다. wires의 각 원소는 [v1, v2] 2개의 자연수로 이루어져 있으며, 이는 전력망의 ..

Coding test 2022.06.07

[프로그래머스] N-Queen (Lv 2) - javascript

문제 가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은 서로를 한번에 공격 할 수 없습니다. 체스판의 가로 세로의 세로의 길이 n이 매개변수로 주어질 때, n개의 퀸이 조건에 만족 하도록 배치할 수 있는 방법의 수를 return하는 solution함수를 완성해주세요. 제한사항 퀸(Queen)은 가로, 세로, 대각선으로 이동할 수 있습니다. n은 12이하의 자연수 입니다. 🔑 Backtracking 알고리즘 (dfs) backtraking은 dfs 알고리즘의 방식 중 하나이다, 깊이 우선 탐색으로 조사를 이어가다가, 조건에 맞지 않으면 바로 상위로 빠져나오는 방식..

Coding test 2022.06.07

[프로그래머스] 배달 (Lv 2) - javascript

문제 N개의 마을로 이루어진 나라가 있습니다. 이 나라의 각 마을에는 1부터 N까지의 번호가 각각 하나씩 부여되어 있습니다. 각 마을은 양방향으로 통행할 수 있는 도로로 연결되어 있는데, 서로 다른 마을 간에 이동할 때는 이 도로를 지나야 합니다. 도로를 지날 때 걸리는 시간은 도로별로 다릅니다. 현재 1번 마을에 있는 음식점에서 각 마을로 음식 배달을 하려고 합니다. 각 마을로부터 음식 주문을 받으려고 하는데, N개의 마을 중에서 K 시간 이하로 배달이 가능한 마을에서만 주문을 받으려고 합니다. 다음은 N = 5, K = 3인 경우의 예시입니다. 위 그림에서 1번 마을에 있는 음식점은 [1, 2, 4, 5] 번 마을까지는 3 이하의 시간에 배달할 수 있습니다. 그러나 3번 마을까지는 3시간 이내로 배달..

Coding test 2022.06.04