Algorithm/Programmers

    [JS][프로그래머스LV2]땅따먹기

    문제 번호 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr 알고리즘 분류 문제 풀이 오랜만에 DP 문제를 풀어보았다. 우선 문제에서 주어지는 land라는 2차원배열과 똑같은 모양의 2차원 DP 배열을 생성한다. let DP = land.map(x=>x.map(x=>x=0)); 그리고 DP 배열의 첫번째 행은 문제에서 주어진 land 와 같은 내용으로 채웠다. for(let i=0; i x=0)); for(let i=0; i

    [JS][프로그래머스LV2]올바른 괄호

    문제 번호 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr 알고리즘 분류 문제 풀이 문제가 어렵진 않았으나 시간초과가 발생하는 정확한 원일을 발견하지 못하였다. 처음에는 Stack 자료구조를 사용하여 문제를 풀었는데 시간초과가 발생하였다. pop 과 push 메서드 때문에 발생한 문제로 생각하여 for문을 사용하여 괄호들을 카운트하는 방법으로 풀이를 진행하였는데 역시나 시간초과가 났다. 그래서 검색을 진행해보던중 다음의 글을 발견하였다. typeof vs equal..

    [JS][프로그래머스LV1]신규 아이디 추천

    문제 번호 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 알고리즘 분류 문제 풀이 해당 문제는 특별한 알고리즘을 요구하진 않는다. 다만 여러단계에 거쳐서 문제에서 요구한 구현을 해야하기 때문에 메서드와 정규식을 다양하게 알고있으면 도움이 됐던 문제였다. 전체코드 function solution(new_id) { var answer = ''; // 1단계 new_id = new_id.toLowerCase(); // 2단계 for(let i=0; i

    [JS][프로그래머스LV1]크레인 인형 뽑기

    문제 번호 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 알고리즘 분류 문제 풀이 우선 주어진 모든 움직임을 파악하기위해서 moves.length 만큼 for문을 사용하였다. 이후 moves 에서 주어진 열을 탐색하면서 인형이 발견되면 해당 인형을 집어서 result 라는 배열에 넣는다. 이때 result 의 최상단이 현재 집은 인형과 같은 인형이라면 result 배열을 pop 시켜주고 answer 변수에 제거한 인형의 수를 추가한다. 전체코드 function solution(board, moves) { var answer = 0; ..

    [JS][프로그래머스]숫자 문자열과 영단어

    문제 번호 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 알고리즘 분류 문제 풀이 replaceAll()을 사용하여 문제를 풀려고 했는데 프로그래머스에서는 replaceAll()이 지원하지 않는 함수라고 나온다. 그래서 검색해봤는데 MDN 문서에는 JS에서도 replaceAll()을 사용할 수 있다고 나온다. 하지만 비교적 최근에 추가된 메서드로 아직 사용 불가능한 환경이 더 많은것 같다. String.prototype.replaceAll() - JavaScript | MDN The replace..

    [JS][프로그래머스]키패드 누르기

    문제 번호 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 알고리즘 분류 구현? 문제 풀이 문제에서 주어진 키패드의 모양을 keyPad라는 배열로 나타냈다. 배열의 각 좌표가 나타내는 값은 문제에서 주어진 것과 동일하다. ' 1 2 3 // 4 5 6 ........' 순서. [0,0]은 키패드의 '1' 이다. let keyPad = [ [0,0], [1,0], [2,0], [0,1], [1,1], ..

    [JS][프로그래머스]폰켓몬

    문제 번호 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr 알고리즘 분류 문제 풀이 Set은 중복을 허용하지 않는 자료구조이다. Set - JavaScript | MDN Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있습니다. developer.mozilla.org 이러한 성질을 이용해서 주어진 nums 배열을 set 으로 변형하고 그 set의 size를 반환하거나 N/2를 반환하면 된다. 전체코드 function solution(nums) { var answer = ..

    [JS][프로그래머스]실패율

    문제 번호 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 알고리즘 분류 문제 풀이 자바스크립트의 배열 요소의 자료형에는 제한이 없다. 배열 ko.javascript.info 이를 이용해서 실패율을 먼저 계산한뒤 배열에 객체를 넣어준다. 그 이후 문제에서 주어진 조건에 따라서 정렬을 진행하고 난뒤, map 메서드를 사용하여 답을 반환한다. map 메서드의 반환값은 새로운 배열이다. Array.prototype.map() - JavaScript | MDN map() 메서드는 배열 내의 모든 요소 각각에 대하여 ..