본문 바로가기

전체 글

프로그래머스 - 소수 찾기 level 2 마음을 급하게 먹으니 처음 시도에서는 잘 풀리지 않았다. 차분하게 경우의 수를 트리 형태로 그려 본 것이 문제풀이에 도움이 됐다. 문제 한자리 숫자가 적힌 종이 조각이 있다. 이를 붙여 소수를 몇개 만들 수 있는지 반환하라. 입력값 numbers: 0-9사이의 숫자로 구성된 문자열. 0 < numbers.length i+2)) for (let x = 2; x * x { for (let i = 0; i < numbers.length; i++) { if (!seen.has(i)) { const x = prefix + numbers[i] if (primes.has(x*1)) { ans.add(x*1) } seen.add(i) generate(x, seen) seen.delete(i) } } } generate.. 더보기
프로그래머스 코딩테스트 Kit 스택/큐 문제풀이 프로그래머스 코딩테스트 kit 스택/큐로 분류되어 있는 탑, 다리를 지나는 트럭, 기능개발, 프린터, 쇠막대기, 주식가격 문제풀이. 1.탑 function solution(heights) { const answer = [0]; for (let i = 1; i < heights.length; i++) { for (let j = i - 1; 0 heights[i]) { answer.push(j + 1) break } } if (answer.length === i) { answer.push(0) } } return answer; } 2.다리를 지나는 트럭 function solution(bridgeLength, weight, truckWeights) { truckWeights.reverse() const on.. 더보기
프로그래머스 코딩테스트 Kit 해시 문제풀이 프로그래머스 코딩테스트 kit에 해시로 분류되어 있는 완주하지 못한 선수, 전화번호 목록, 위장, 베스트앨범 문제풀이. 1. 완주하지 못한 선수 입력값 participant: 마라톤에 참여한 선수들의 이름이 담긴 배열. completion: 마라톤을 완주한 선수들의 이름이 담긴 배열. 출력값 완주하지 못한 선수의 이름을 반환하라. 제한사항 1 { if (plays[a] === plays[b]) { return a plays[b] ? 1 : -1 }) result.push(ids.get(key).pop() * 1) if (ids.get(key).length) { result.push(ids.get(key).pop() * 1) } } return r.. 더보기
Google Code Jam 2020 Qualification Round 후기 지난 일요일에 27시간동안 구글코드잼 2020 Qualification Round가 있었고 통과했다. 점수체계도 모르고 참가하면 다 통과하는 연습라운드이거니하고 참가했었는데 Qualification Round에서 총 30점 이상 받아야한다는 규칙이 있었다. 그래도 5문제 중 풀만한 난이도의 문제 3개만 풀면 통과 가능한 점수를 받을 수 있고 시간제한도 넉넉하기 때문에 충분히 시간을 투자하고 참가했다면 거진 통과할 수 있었을 것 같다. Qualification Round에서 푼 문제들을 간략하게 정리해보겠다. 1. Vestigium 각 행과 열에 중복된 숫자없이 1~N사이의 원소가 한번씩 등장하는 N x N 정사각형을 Latin Square라고 한다. 주어진 정사각형이 Latin Square가 맞는지 확인.. 더보기
2018 카카오 코딩테스트 1차 프렌즈4블록 JS 문제풀이 🔗직접 문제 풀러가기 문제 지워지는 블록은 몇개인가? 2 x 2 형태로 같은 캐릭터가 붙어있으면 사라지면서 점수를 얻는다. 한 블록은 여러개의 2 x 2 에 포함될 수 있다. 블록이 지워진 뒤에는 위에서 아래로 블록들이 쏟아진다. 라이언(R), 무지(M), 어피치(A), 프로도(F), 네오(N), 튜브(T), 제이지(J), 콘(C) 문제풀이 function solution(m, n, board) { board = board.map(line => line.split('')); let pang = new Set(); while (true) { for (let i = 0; i + 1 < m; i++) { for (let j = 0; j + 1 < n; j++) { if (!board[i][j]) { conti.. 더보기
2018 카카오 코딩테스트 1차 뉴스 클러스터링 JS 문제풀이 🔗직접 문제 풀러가기 문제 두 문자열을 자카드 유사도를 구하라. J(A,B) = 두 집합의 교집합 크기를 두 집합의 합집합 크기로 나눈 값. 두 집합이 공집합일 경우 나눗셈 정의가 안되므로 J(A,B) = 1 을 따로 정의하라. 입력값 2 < str1, str2 더보기
2018 카카오 코딩테스트 1차 셔틀버스 JS 문제풀이 🔗직접 문제 풀러가기 문제 콘이 셔틀을 타고 사무실로 갈 수 있는 정류장 도착 시각 중 제일 늦은 시각을 구하여라 셔틀은 09:00부터 총 n회 t분 간격으로 역에 도착하며, 하나의 셔틀에는 최대 m명의 승객이 탈 수 있다. 셔틀은 도착했을 때 도착한 순간에 대기열에 선 크루까지 포함해서 대기 순서대로 태우고 바로 출발한다. 예를 들어 09:00에 도착한 셔틀은 자리가 있다면 09:00에 줄을 선 크루도 탈 수 있다. 모든 크루는 잠을 자야 하므로 23:59에는 집에 돌아간다. 콘은 게으르기 때문에 같은 시각에 도착한 크루 중 대기열에서 제일 뒤에 선다. 입력값 셔틀 운행 횟수 n, 셔틀 운행 간격 t, 한 셔틀에 탈 수 있는 최대 크루 수 m, 크루가 대기열에 도착하는 시각을 모은 배열 timetabl.. 더보기
2018 카카오 코딩테스트 1차 다트 게임 JS 문제풀이 🔗직접 문제 풀러가기 문제 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻을 수 있는 점수는 0 - 10점. 점수와 함께 Single(S), Double(D), Triple(T) 영역이 존재한다. 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱으로 계산된다. 옵션으로 스타상(*) , 아차상(#)이 있다. 스타상(*) 당첨 시 해당 점수와 바로 전에 얻은 점수를 각 2배로 만든다. 아차상(#) 당첨 시 해당 점수는 마이너스된다. 스타상(*)은 첫 번째 기회에서도 나올 수 있다. 이 경우 첫 번째 스타상(*)의 점수만 2배가 된다. (예제 4번) 스타상(*)은 다른 스타상(*)의 효과와 중첩될 수 있다. 이 경우 중첩된 스타상(*) 점수는 4배가 된다. (예제 4번) 스타상(*)의 효과는 아차상.. 더보기