코딩테스트(JavaScript) 17

백준- 10845번(큐) / 자바스크립트

스택과 대응되는 큐문제도 풀이하였다. 스택 문제 풀이 경험이 있어 손쉽게 풀 수 있었다. const input = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); const arr = input.slice(1); const que = []; // 큐에 쌓이는 값(안보이는 값) const answer = []; // "출력" 값 (보이는 값) function solution() { for (let i = 0; i < arr.length; i++) { let command = arr[i].split(' ')[0]; let num = arr[i].split(' ')[1]; switch (command) { case 'pus..

백준-1847번(스택 수열) / 자바스크립트

문제 링크: https://www.acmicpc.net/problem/1874 const fs = require('fs'); const input = fs .readFileSync('example.txt') // 제출시: '/dev/stdin' .toString() .trim() .split('\n') .map((el) => Number(el)); function stackSequence() { const n = input[0]; // 8 const arr = input.slice(1); // [4,3,6,8,7,5,2,1] n을 제ㅁ외한 나머지 목록(마지막 index 지정 안하면 끝까지 지정됨) // 이 숫자와 일치하게 수열을 만들고 완료하면 스택에서 제거, push 할때는 오름차순으로 넣기 let s..

백준- 10828번(스택) / 자바스크립트

문제링크: https://www.acmicpc.net/problem/10828 const array = require('fs') .readFileSync('example.txt') // 제출시: '/dev/stdin' .toString() .trim() .split('\n'); // 문자 -> 배열화 const stack = []; const result = []; const length = Number(array.shift()); // 14 제거, 명령 모음만 남음 for (let i = 0; i < length; i++) { const commandArray = array[i].split(' '); const command = commandArray[0]; switch ( command // if -..

프로그래머스- 2차원으로 만들기

프로그래머스 레벨 0 Day10에 돌입했다. 2차원 배열은 코딩테스트에 단골로 등장하는 문제이니 만큼 잘 짚고 넘어가는게 중요하겠다. [0,1,2,3,4,5,6,7,8] 에서 slice 메소드를 활용해 n길이 만큼 뽑아내는 것 까지는 성공하였으나, 요소간 중복되지 않고 [[0,1], [2,3], [4,5], [6,7]] 와 같이 뽑아내는데 아래와 같이 어려움을 겪었다. // 시도과정 function solution(num_list, n) { let arr = []; for (let i = 0; i < num_list.length; i++) { arr.push(num_list.slice(i, i + n)); // arr [[1,2], [2,3], [3,4], [4,5], [5,6]...] // 원하는 답:..

프로그래머스-진료 순서 정하기

[배운점] 배열 복사는 스프레드 연산자인 점 까먹지 말기!! - 오답: emergency.sort((a,b) => b-a) - 정답: [...emergency].sort((a,b) => b-a) [indexOf 메소드] arr.indexOf(searchElement[, fromIndex]) - searchElement: 배열에서 찾을 요소 - fromIndex (옵션): 검색을 시작할 인덱스. 이 값을 생략하면 배열의 처음부터 검색을 시작함. [indexOf 예시] const animals = ["cat", "dog", "elephant", "bee", "ant"]; console.log(animals.indexOf("cat")); // 0 console.log(animals.indexOf("elepha..

프로그래머스-외계행성의 나이

[시도과정] function solution(age) { // 초기값: 문자열 let answer = ''; //age는 number이므로 문자로 바꾸기 let str = String(age); // 23 --> "23" //문자를 각 배열로 만들어 주기 let arr = Array.from(str); // "23" --> ["2", "3"] let match = { "0":"a", "1":"b", "2":"c", "3":"d", "4":"e", "5":"f", "6":"g", "7":"h", "8":"i", "9":"j" } answer = arr.forEach((el) => match[el]); //["c", "d"] return answer; } 지난 시간 배운 Array.from 메소드를 활용하여..

프로그래머스-특정 문자 제거하기

// 오답: 실행시간 10초 이상 소요 function solution(my_string, letter) { var answer = ''; for (let i = 0; i < my_string.length; i++) { while (my_string[i] === letter) { answer = my_string.replace(letter, ''); } } return answer; } [오답노트] replace 메소드와 정규 표현식을 사용할 경우 for 루프는 필요하지 않다. // 오답: 테스트 케이스 1개만 통과 function solution(my_string, letter) { let answer = ''; for (let i = 0; i < my_string.length; i++) { if (m..

프로그래머스-짝수 홀수 개수

// 시도과정 function solution(num_list) { var answer = []; for (let i = 0; i < num_list.length; i++) { let even = []; let odd = []; if (num_list[i] % 2 == 0) { console.log('짝수들:', num_list[i]); even.push(num_list[i]); console.log('짝수테스트:', even); } else if (num_list[i] % 2 !== 0) { console.log('홀수들:', num_list[i]); odd.push(num_list[i]); console.log('홀수테스트:', odd); } answer.push(even.length); answer..

프로그래머스-직각삼각형 출력하기

// 정답 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; // input은 빈 배열 rl.on('line', function (line) { // line은 문자 -> "3" input = line.split(' '); // 단어별로 잘라서 배열에 담기 -> [3] }).on('close', function () { let number = Number(input[0]); // "3" -> 3 for( let i = 1; i 문자열만 받는다. 예) "hi".repeat(5) // "hihihihihi"..

프로그래머스-옷 가게 할인 받기

프로그래머스 0단계 문제인 `옷 가게 할인 받기` 문제를 풀어보았다. 부분점수에만 그쳐서 어떤 부분이 문제였는 지를 파악해보았다. // 나의 코드 function solution(price) { let answer= 0; if (price >= 100000) { answer = Math.floor(price * 0.95); } else if (price >= 300000) { answer = Math.floor(price* 0.9); } else (price >= 500000) { answer = Math.floor(price * 0.8); } return answer; } [배운점] 1. 조건의 순서(가격 큰 순서대로) 현재 조건의 순서로 인해 300,000 이상 또는 500,000 이상의 경우에 첫 ..

728x90
LIST