Algorithm

    [JS][프로그래머스LV2]방금그곡

    문제 번호 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 알고리즘 분류 문제 풀이 알고리즘은 어렵지않다. 주어진 정보를 어떻게 가공하여서 잘 비교하나가 중요한 문제였다. 이번 문제에서 가장 중요한 내용은 멜로디로 주어지는 내용중에 'C#'과 같이 두 글자를 한 글자로 보아야 한다는 것이다. 입력 'm' 이 대문자로만 주어진다는 내용을 못봤는데 다른 블로그를 참고해보니 소문자로는 입력되지 않는것 같다. 그래서 'C#'과 같이 뒤에 '#'이 붙은 멜로디의 경우 '#'앞에 있는 알파벳을 소문자로 바꾸..

    [JS][프로그래머스LV2]가장 큰 정사각형 찾기

    문제 번호 코딩테스트 연습 - 가장 큰 정사각형 찾기 [[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9 programmers.co.kr 알고리즘 분류 DP 문제 풀이 처음 풀이는 DP를 사용하지 않았었다. 주어진 board 배열에서 1을 발견할때마다 그 점을 왼쪽 상단 모서리로 하여 만들 수 있는 가장 큰 정사각형의 크기를 구하여 답으로 반환했었다. 그러나 그렇게 풀이를 진행 할 경우 시간초과에 걸리게 된다. 따라서 해당 문제는 DP 알고리즘으로 해결하는 것이 맞다고 판단된다. 우선 주어진 board 배열보다 1행이 추가된 2차원 배열을 생성한다. const col = board[0].length; const row = board.length; let dp = new Arra..

    [JS][프로그래머스LV2]압축

    문제 번호 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 알고리즘 분류 특별한 알고리즘은 없다. 문제에서 요구하는대로 구현하면 되는 문제이다. 정규표현식과 메서드들을 잘 사용한다면 쉽게 풀 수 있다. 전체코드 function solution(msg) { var answer = []; let dictionary = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']; let reg = new Re..

    [JS][프로그래머스LV2]파일명 정렬

    문제 번호 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 알고리즘 분류 문제 풀이 문제에서 주어진 조건대로 정렬을 사용해야하는 문제이다. 특별히 어려운 알고리즘은 없지만 조건이 여러개라서 잘 보고 천천히 풀면 된다. 나는 빈 배열을 생성하여 배열에 head, number, tail 프로퍼티로 이루어진 객체들을 push 한 뒤 정렬하는 방법을 선택하였다. 우선 입력받은 files 배열을 빈 배열인 file 배열에 넣어준다. let file = []; // 주어진 파일들을 입력받는 부분. for(le..

    [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; ..