Algorithm Problem/JavaScript

    [javascript] 프로그래머스 - 단어 변환

    [javascript] 프로그래머스 - 단어 변환

    🤔문제 해결 Lv3 | BFS begin 에서 시작하여 BFS 탐색 BFS는 target과의 거리를 알 수 있으므로 target과의 최단거리를 구해서 답을 출력 아래의 코드에서는 visited와 words_obj를 사용했지만 잘 짜보면 words_obj 하나로 충분히 구현할 수 있다! 💻소스 코드 function solution(begin, target, words) { var answer = 0; // 타겟이 워드에 없는 경우 if (!words.includes(target)) { return answer } let n = words.length // visited 와 queue let visited = Array(n).fill(0) let q = [begin] // 단어의 인덱스를 객체에 저장 con..

    [javascript] 프로그래머스 - 두 개 뽑아서 더하기

    [javascript] 프로그래머스 - 두 개 뽑아서 더하기

    🤔문제 해결 1. 2중 포문을 이용하여 서로 다른 2 숫자를 더한 값을 배열에 담는다. 2. 중복을 제거한다 set 3. 정렬한다. 💨 💻소스 코드 function solution(numbers) { var answer = []; for ( var i = 0; i { return a-b }) return result; } 📕문제 확인 출처: 프로그래머스 링크: https://progra..

    [JavaScript] 프로그래머스 - 베스트앨범

    [JavaScript] 프로그래머스 - 베스트앨범

    문제 해결 1. 해시 2. 주어진 genres와 plays를 객체 형태로 만든다. (1) ex) { 장르이름: { 총 재생 횟수: 500, 노래들: [[200, 1], [300, 5]] } 3. 만들어진 객체를 총 재생 횟수로 내림차순 정렬한다. 4. 각각의 장르에서 노래를 두개씩 뽑아 answer 에 넣는다. (1) 각각의 장르에서 노래들을 꺼내 내림차순 정렬한다. (2) 그 때 재생횟수가 같다면 인덱스로 오름차순 정렬한다. (3) 정렬 후 노래를 두개 꺼내 answer 에 넣는다 (4) 만약 노래가 하나라면 정렬하지 않고 그냥 넣는다. ( 두개 일 경우에도 정렬은 필요 없으나 노래가 하나인지 그 이상인지가 중요하므로) 🌤 문제를 풀어 본 후 여러가지 풀이를 찾았다. 자바스크립트를 공부하는 목적은 알고..

    [JavaScript] 프로그래머스 - 프린터

    [JavaScript] 프로그래머스 - 프린터

    문제 해결 1. 인쇄되는 조건과 내 문서의 위치 그리고 인쇄가 몇번 됐는지 체크하며 문제를 해결한다. 2. 맨 앞의 문서를 꺼내고 우선순위가 제일 높은지 확인한다. 3. 우선순위가 제일 높다면 인쇄를 하고 카운트를 올려준다. 4. 아니라면 꺼낸 문서를 맨 뒤에 집어 넣는다. 5. 문서를 꺼낼 때마다 내문서의 위치를 바꿔준다. 6. 다시 2번으로 돌아가 반복한다. 😎 스택/큐 문제이다. 소스 코드 function solution(priorities, location) { var answer = 0; // 인쇄를 몇번 했는지 var cnt = 0 // 내문서의 위치 var myDoc = location while (priorities.length > 0) { // 맨 앞의 문서를 꺼낸다 var c = pri..

    [JavaScript] 프로그래머스 - 영어 끝말잇기(Summer/Winter Coding(~2018))

    [JavaScript] 프로그래머스 - 영어 끝말잇기(Summer/Winter Coding(~2018))

    문제 해결 1. 앞단어의 뒷글자와 뒷단어의 앞글자를 비교하며 맞는지 확인하고 2. 사용한 단어는 따로 배열에 담아두고 확인한다. 3. 조건에 맞지 않는다면 게임을 종료 🌦 배열을 인덱싱하는 문제 🐱‍🏍 배열이나 스트링의 맨 뒤 인덱스를 선택하는 방법 파이썬에서는 보통 list[-1] 로 맨뒤 인덱스를 선택할 수 있으나 자바스크립트에서는 array[array.length - 1] 로 맨뒤 인덱스를 선택한다. 소스 코드 function solution(n, words) { var answer = [0, 0]; // 이미 사용한 단어를 넣을 배열 var usedWords = [] // 1번 플레이어부터 시작 usedWords.push(words[0]) for (let i = 1; i < words.length..

    [JavaScript] 프로그래머스 - 기능개발

    [JavaScript] 프로그래머스 - 기능개발

    문제 해결 1. 큐/스택을 활용하는 문제! 2. 현재 진행 상황(progresses) 에 각각 속도(speeds)를 더해준다. 3. 뒤에있는 기능이 앞의 기능보다 먼저 개발 돼도 배포가 불가능 (1) 맨 앞의 기능부터 확인해 준다. (2) 맨 앞의 기능이 개발 완료 됐다면 배포한다(배열에서 제거한다.) (3) 개발 완료 되지 않았다면 2번으로 간다 🌤 큐/스택을 활용하는 문제 splice를 이용했는데 pop과 shift라는 메소드가 존재하는 것을 알게 됐다. 🛴 pop. shift var arr = [1,2,3,4,5] arr.pop() console.log(arr) // [ 1, 2, 3, 4 ] arr.shift() console.log(arr) // [ 2, 3, 4 ] pop은 배열의 마지막에 있..