본문 바로가기

js

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.. 더보기
사이클 감지하기 leetcode 141. Linked List Cycle 문제풀이 문제: 주어진 연결리스트에 사이클이 있다면 true를 없다면 false를 반환하라 Hash Set 1. 각 노드를 set에 추가해가며 순회한다. 2. 다음에 순회할 노드가 이미 set에 들어있다면 true를 반환. 3. 순회를 무사히 마쳤다면 사이클이 없는 것이므로 false를 반환. 모든 노드를 set에 저장하려면 O(N)공간이 필요하다. set에 노드를 저장하는 것 대신, 노드의 val값에 이미 방문했음을 표시한다면 메모리를 아낄 수있다. Two Pointer 투 포인터 테크닉을 활용해서도 공간복잡도를 O(1)으로 제한할 수 있다. 투 포인터 테크닉은 한 포인터는 더 빠르게 또 다른 포인터는 더 느리게 움직이도록하는 테크닉을 말한다. .. 더보기
[JS] 두 날짜가 몇일 차이인지 계산하기 Leetcode 1360. Number of Days Between Two Dates 문제풀이. new Date() 자바스크립트 Date 는 플랫폼 독립적인 형식으로 어떠한 한 시점을 나타내는 객체 Date.prototype.getTime() 은 특정 날짜를 밀리세컨드 숫자 값으로 반환. (1970년 1월 1일 00:00:00 UTC이후부터 해당) 1000*60*60*24 만큼 나누어준 이유는 밀리세컨드값에서부터 일자로 변환하기 위해서 1,000 * 60(초) * 60(분) * 24(시간)을 나누어 준 것. Hard Coded 1. 윤년구하기 2. 날짜를 1970년 1월 1일부터 일수의 합으로 바꾸기 3. 두 일수의 차이 구하기 윤년 알고리즘은 if 4로 딱 떨어지게 나눌 수 없으면 return 평년 e.. 더보기