Algorithm 236

영어 끝말잇기 ( Level 2 , JavaScript, Summer/Winter Coding )

영어 끝말잇기 ( Level 2 ) Summer/Winter Coding ~2018 ( JavaScript ) 문제 링크 나의 풀이 function solution(n, words) { for ( let i = 1; i < words.length; i++ ) { if ( words[i-1].slice(-1) !== words[i][0] || words.slice(0,i).includes(words[i]) ) return [i % n + 1, parseInt(i / n) + 1] } return [0, 0] } 이전 단어의 끝 알파벳과 현재 단어의 첫 알파벳이 일치하는지 확인 현재 단어가 이전에 나온 적이 있는지 확인 탈락하는 사람의 번호와 몇 번째로 탈락하는지 리턴 조건에 걸리지 않고 반복문이 끝난다면 ..

예산 ( Level 1, JavaScript, Summer/Winter Coding )

예산 ( Level 1 ) Summer/Winter Coding ~2018 ( JavaScript ) 문제 링크 나의 풀이 function solution(d, budget) { const arr = d.sort((a,b) => a-b) let i = 0; while ( budget >= 0 ) { if ( arr[i] === undefined ) return i else if ( budget === arr[i] ) return i+1 else if ( budget < arr[i] ) return i budget -= arr[i] i += 1 } } d를 오름차순으로 정렬한다. budget에서 arr[i]의 값을 빼주며 0이 될때까지 반복문을 돈다. budget - arr[i]이 0이 되었거나, 0보다 ..

소수 만들기 ( Level 1, JavaScript, Summer/Winter Coding )

소수 만들기 ( Level 1 ) Summer/Winter Coding ~2018 ( JavaScript ) 문제 링크 나의 풀이 function solution(nums) { const arr = [] const isPrime = n => { for ( let i = 2; i isPrime(el)).length; } 숫자 세 개의 합을 담는 arr을 선언한다 숫자가 소수인지 판별하는 isPrime 함수를 만든다 for문 세개를 중첩해 세 개의 합을 arr에 담는다 arr중 소수만 남긴 후에 배열의 길이를 리턴

게임 맵 최단거리 ( Level 2, JavaScript, 찾아라 프로그래밍 마에스터 )

게임 맵 최단거리 ( Level 2 ) Programmers 찾아라 프로그래밍 마에스터 ( JavaScript ) 문제 링크 나의 풀이 function solution(s) { const dx = [0,0,1,-1]; const dy = [1,-1,0,0]; const queue = [[0,0,1]]; while ( queue.length ) { const cur = queue.shift(); if ( cur[0] === maps.length - 1 && cur[1] === maps[0].length - 1) return cur[2] for(let i=0;i= 0 && yy >= 0 && xx < maps[0].length && yy < maps.length && maps[yy][xx] === 1 ) {..

짝지어 제거하기 ( Level 2, JavaScript, 2017 팁스타운 )

짝지어 제거하기 ( Level 2 ) Programmers 2017 팁스타운 ( JavaScript ) 문제 링크 나의 풀이 function solution(s) { const stack = [] for ( let i = 0; i < s.length; i++ ) { s[i] === stack[stack.length-1] ? stack.pop() : stack.push(s[i]) } return stack.length ? 0 : 1 } 문자열 s에서 하나씩 체크하며 stack의 마지막 요소와 같다면 제거한다 다르다면 스택에 추가 스택의 길이 여부로 전부 제거됐는지 확인

예상 대진표 ( Level 2, JavaScript, 2017 팁스타운 )

예상 대진표 ( Level 2 ) Programmers 2017 팁스타운 ( JavaScript ) 문제 링크 나의 풀이 function solution(n,a,b) { let count = 0, temp = a; if ( b < a ) { a = b b = temp } while ( true ) { if ( a % 2 && Math.abs(b-a) === 1 ) return count+1 a = a % 2 ? (a + 1)/2 : a/2 b = b % 2 ? (b + 1)/2 : b/2 count += 1 } } a,b 대소 비교 후 작은것을 a 에 넣어준다. 반복문을 통해 a와 b를 홀수, 짝수를 판별해 값을 줄여주고 이 때 반복 횟수를 count 를 통해 저장한다 a,b가 1이 차이나면서 a가 대진..

4. 덱 ( Deque, JavaScript 구현 )

덱 ( Deque ) 덱이란? double-ended queue은 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조의 한 형태이다. 두 개의 포인터를 사용하여, 양쪽에서 삭제와 삽입을 발생 시킬 수 있다. 큐와 스택을 합친 형태로 생각할 수 있다. 구조 덱은 앞, 뒤에서 각각 put, get을 할 수 있는 구조이다. put는 큐에 자료를 넣는 것을, get은 큐에서 자료를 꺼내는 것을 의미한다. front와 rear는 데이터의 앞과, 뒤를 가리키며 각각의 노드는 next와 prev로 연결돼있다. 언제 사용하는가? 저장할 데이터 개수가 가변적일 때 검색을 할 일이 거의 없을 때 데이터 접근을 랜덤하게 하고 싶을 때 구현 기본적인 덱의 구현 const Deque = (() => { class Deque { ..

Algorithm/theory 2021.07.25

3. 큐 ( Queue, JavaScript 구현 )

큐 ( Queue ) 스택은 보통 큐와 비교해서 알아보는데 스택에 대해 알아봤고, 이번엔 큐에 대해 알아보자. Queue 란? 큐(queue)는 컴퓨터의 기본적인 자료 구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO (First In First Out)구조로 저장하는 형식을 말한다. 영어 단어 queue는 표를 사러 일렬로 늘어선 사람들로 이루어진 줄을 말하기도 하며, 먼저 줄을 선 사람이 먼저 나갈 수 있는 상황을 연상하면 된다. 나중에 집어 넣은 데이터가 먼저 나오는 스택과는 반대되는 개념이다. 프린터의 출력 처리나 윈도 시스템의 메시지 처리기, 프로세스 관리 등 데이터가 입력된 시간 순서대로 처리해야 할 필요가 있는 상황에 이용된다. 구조 큐는 put(insert)와 get(dele..

Algorithm/theory 2021.07.21