본문 바로가기

자바스크립트

프로그래머스 - 단어 변환 문제풀이에 백트래킹을 적용하였고, 자바스크립트로 작성했습니다. 문제 두 개의 단어 begin, target과 단어 집합 words가 매개변수로 주어질 때, 최소 몇 단계를 거쳐 begin이 target으로 변환 될 수 있는지를 반환하라. 제한사항 한 번에 한 개의 알파벳만 바꿀 수 있다. words에 있는 단어로만 변환할 수 있다. 각 단어는 알파벳 소문자로만 이루어져 있다. 3 dot->dog->cog와 같이 4단계를 거쳐 변환 가능. 문제풀이 이 문제의 가장 작은 하위문제는 words 순회할 때 이전 문자열을 현재 문자열으로 수정할 수 있는가 없는가 이다. 수정이 가능할 경우 이전문자열을 현재 문자열로 수정한 경우와 수정하지 않은 경우 둘 다 탐색해야한다. 수정이 불가능한 경우 수정하지 않은 경우만 .. 더보기
프로그래머스 - 네트워크 문제 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 말한다. 예를들어 컴퓨터A가 컴퓨터B와 직접적으로 연결되어있고, 컴퓨터B가 컴퓨터C와 직접적으로 연결되어있다면, 컴퓨터A와 컴퓨터C는 간접적으로 연결되어 정보를 주고 받을 수 있다. 따라서 컴퓨터A,B,C는 모두 같은 네트워크 상에 있다고 말할 수 있다. 컴퓨터의 갯수 n과 연결에 대한 정보가 주어질 때, 네트워크의 갯수를 반환하라. 입력값 n(int): 컴퓨터의 갯수 computers(int[][]): 컴퓨터들이 연결되어있는지 아닌지를 표현한 2차원배열. 컴퓨터i와 컴퓨터j가 연결되어있다면 computers[i][j]는 1이고 연결되어있지 않으면 0이다. 제한사항 1 더보기
프로그래머스 - 정수 삼각형 문제 삼각형 꼭대기에서부터 바닥까지 이동할 때, 숫자의 합이 가장 큰 경우를 찾아라. 아래칸으로 이동할 때는 대각선 방향으로 왼쪽 한 칸 또는 오른쪽 한 칸으로만 이동이 가능하다. 제한사항 1 더보기
프로그래머스 - 타일 장식물 문제 앵무조개의 나선 모양처럼 생긴 타일이 붙어있다. 타일이 N개일때 둘레의 길이를 구하라. 제한사항 1 2*x + 2*y function solution(N) { let a = 0, b = 1 while (--N) { [a, b] = [b, a + b] } return getPerimeter(b, a + b) } 시간복잡도: O(N) 공간복잡도: O(1) 더보기
프로그래머스 - N으로 표현 문제 숫자 5와 사칙연산만으로 12를 표현할 수 있다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 이고, 이중 가장 작은 경우는 4이다. 숫자 N과 number가 주어질 때 N과 사측연산만으로 number를 표현하는 방법 중 N의 최소사용횟수를 반환하라. 제한사항 1 더보기
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.. 더보기