본문 바로가기

알고리즘구현능력/문제해결능력

(78)
행렬 테두리 회전하기 1. 1 2 3 4 5 6 7 8 9 처럼 나오도록 행렬을 만든다. 2. 한바퀴를 돌면서 배열을 만든다. 3. 가져온 배열의 값중 최소값을 넣는다.. 혹시 마지막 반복이라면 굳이 다음 작없을 안해도 되므로 return시켜 종료해버린다. 4. 배열을 한칸씩 밀어낸다. 그리고 pop과 unshift를 통해서 한칸씩 밀어낸다. pop은 맨 끝의 배열값을 가져오면서 제거하고 unshift는 배열의 첫번쨰에 값을 넣는 것이다. 5. 그러고 난 뒤 앞에서 반복햇던 반복을 조금 수정하여 한칸씩 밀린값을 대입한다. //가장 작은 값 가져오는 거 .. function solution(rows, columns, queries) { // ROW 행 column 렬 let newArr = []; let count = 1; f..
크레인 인형뽑기 게임 크레인이 내려가서 인형을 가지고 오는 것을 함수로 만들었다. move 렬만 내려가면 되므로 0이 아닌 값이 있을 경우에 바로 리턴 시키도록 했다. 리턴 시킨 값이 0이 아닌 경우(인형이 없는 경우)를 제외하고 박스에 넣었다(push) 그리고 마지막에 넣은 인형과 그전에 넣은 인형이 같다면 플러스 2 결과값 출력 function solution(board, moves) { var answer = 0; let arr = []; for(let i=0;i 1 && arr[arr.length-1] == arr[arr.length-2]){ answer+= 2; arr.pop(); arr.pop(); } } return answer; } function crakenDown(board,move){ for(let i=0..
로또의 최고 순위와 최저 순위 로또의 최고 순위와 최저 순위 문제 지워진 숫자와 지워지지 않은 숫자를 체크해서 최고 순위와 최저 순위를 구하면 되는 문제다. 1. 지워진 숫자의 갯수를 체크한다. 2. 지워진 숫자가 아닌 다른 숫자와 일치하는 갯수를 찾는다. 3. 두 숫자를 찾게되면 지워진 숫자 + 일치하는 숫자 가 맞는 갯수 최고가 되고 아닌게 최저 순위가 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 function solution(lottos, win_nums) { var answer = []; let zerocount =0; for(let i=0;i
[javascript] - 땅따먹기 -DP 문제 설명 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 예를 들면, | 1 | 2 | 3 | 5 | | 5 | 6 | 7 | 8 | | 4 | 3 | 2 | 1 | 로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행의 네번째 칸 (8)은 밟을 수 없습니다. 마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution 함수를 완성해 주세요. 위 예의 경우, 1행의 네번째 칸 ..
[javascript] 가장 큰 정사각형 찾기 - DP 가장 큰 정사각형 찾기 문제 설명 1와 0로 채워진 표(board)가 있습니다. 표 1칸은 1 x 1 의 정사각형으로 이루어져 있습니다. 표에서 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하는 solution 함수를 완성해 주세요. (단, 정사각형이란 축에 평행한 정사각형을 말합니다.) 예를 들어 1 2 3 4 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 가 있다면 가장 큰 정사각형은 1 2 3 4 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 가 되며 넓이는 9가 되므로 9를 반환해 주면 됩니다. 제한사항 표(board)는 2차원 배열로 주어집니다. 표(board)의 행(row)의 크기 : 1,000 이하의 자연수 표(board)의 열(column)의 크기 : 1..
[javascript] 올바른 괄호 - 탐색 문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 ()() 또는 는 올바른 괄호입니다. (())() )()( 또는 는 올바르지 않은 괄호입니다. (()( '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력 예 s answer "()()" true "(())()..
[javascript ]카펫 - 완전탐색, 수학 문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 ..
[javascript] 튜플 - 정렬 문제 설명 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2) 튜플의 원소 개수는 유한합니다. 원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., an)이 주어질 때(단, a1, a2, ..., an은 자연수), 이는 다음과 같이 집합 기호 '{', '}'..