🔬Computer Science/코딩테스트 12

두개의 스택으로 큐 구현하기

두 개의 스택으로 큐 구현하기 스택은 나중에 들어간 데이터가 먼저 나오는 자료구조이고, 큐는 먼저 들어간 데이터가 먼저 나오는 자료구조이다. 그렇다면 스택으로 큐를 어떻게 구현할까?? 처음에 이 문제를 보고 이게 과연 가능할까? 싶었는데 생각해보면 간단하다. 왜냐? 스택이 두 개인걸 활용하면 되니까!! 스택1은 데이터를 입력받는 용으로만 사용한다. 스택2는 데이터를 빼는 용도로만 사용한다. (pop) 스택1에 데이터가 있고 스택2가 비어있다면 스택1의 데이터를 스택2로 옮기고 이걸 다시 Pop 하면 된다.

숫자 배열의 각 자리수를 뒤집기

방법1 const solution = (arr) => { let newArr = [] for(let x of arr){ let newarr = x.toString().split('').reverse().reduce((a,b) => a+b,0) newArr.push(Number(newarr)) } console.log(newArr); } solution([32, 55, 62, 20, 250, 370, 200, 30, 100]) // 결과 [ 23, 55, 26, 2, 52, 73, 2, 3, 1 ] 방법2 const solution = (arr) => { let newArr = [] for(let x of arr){ let result = 0; while(x){ let t = x % 10; result =..

특정 값으로 배열 만들어서 채우기

1. Array.from으로 만들기 const newArr = Array.from({length:5}, ()=>0); console.log(newArr); 출력값 [ 0, 0, 0, 0, 0 ] 2. map으로 만들기 const newArr = [...Array(5)].map(x=>0); console.log(newArr); 출력값 [ 0, 0, 0, 0, 0 ] 3. fill로 만들기 const newArr = Array(5).fill(0); console.log(newArr); 출력값 [ 0, 0, 0, 0, 0 ] 😃 잘못된 개념 전달이 있다면 댓글 부탁드립니다. 저의 성장에 큰 도움이 됩니다🤓

숫자를 하나씩 쪼개는 방법 / 백준 2588번 곱셈

이번 문제에서는 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하는 것이었다. 내가 생각한 해결 방법은 (1)에 (2)의 자리수 별 숫자를 곱하는 것이었다. 그래서 (2)에 들어간 숫자를 하나씩 뽑아와야했다. 타입이 숫자인 경우 split을 사용할 수 없기 때문에 숫자에 ''를 더해서 문자로 만들어주고, split('')을 사용해서 배열로 만들고, 배열을 풀어주는 방식을 썼다. 그리고 여기서 자릿수는 세자리 수로 정해져 있기 때문에 구조분해 할당을 써서 깔끔하게 썼다. const [a, b, c] = (num2 + "").split("").map(Number); 👇전체 코드👇 const fs = require("fs"); const [num1, num2] = fs .readFi..

forEach, map, filter, reduce 메서드 작동원리 정리

forEach, map, filter, reduce 는 모두 함수를 인자로 받는 고차함수이다. forEach 인자로 함수, 배열이 들어간다. (배열은 생략가능하다!) 배열안의 값, 인덱스 넘버, 배열이 차례대로 출력된다. (찍으면) const a = [10,11,12,13,14,15]; a.forEach(function(v,i){ console.log(v,i,this); },[1,2]) // 출력값 10 0 [ 1, 2 ] 11 1 [ 1, 2 ] 12 2 [ 1, 2 ] 13 3 [ 1, 2 ] 14 4 [ 1, 2 ] 15 5 [ 1, 2 ] map 새로운 배열이 나온다. const a = [10,11,12,13,14,15]; let answer = a.map((v,i) => { return v * ..

이진트리순회 (DFS: 깊이 우선 탐색)

DFS에서 기본 중의 기본 코드를 공부했습니다. 전위순회 출력하기 ➥ 두 가닥으로 뻗는 재귀함수(여기서는 DFS(v*2), DFS(v*2+1)) 위에 출력하면 된다. function solution(v){ let answer; function DFS(v){ if(v > 7) return; // 종료할거야 else{ console.log(v); // 여기는 뻗을거야! 일단 부모 출력 DFS(v*2); // 왼쪽 자식 출력 DFS(v*2+1); // 오른쪽 자식 출력 } } DFS(v); return answer; } console.log(solution(1)); // 1 2 4 5 3 6 7 중위순회 출력하기 function solution(v){ let answer; function DFS(v){ if(..

백준 15740, A+B - 9, 40점 맞은 이유, node.js

백준 15740, A+B - 9 문제를 풀었는데 40점이 나왔다. 처음에는 왜 40점만 맞았는지 이해가 되지 않았는데 이번에 새롭게 알게 된 내용이 있어서 정리한다. 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B (-1010000 ≤ A, B ≤ 1010000)가 주어진다. 출력 첫째 줄에 A+B를 출력한다. 서브태스크 번호배점제한 1 5 0 ≤ A, B ≤ 10 2 10 -100 ≤ A, B ≤ 100 3 10 0 ≤ A, B ≤ 109 4 15 -109 ≤ A, B ≤ 109 5 15 0 ≤ A, B ≤ 260 6 20 -260 ≤ A, B ≤ 260 7 20 0 ≤ A, B ≤ 1010000 8 5 -1010000 ≤ A, B ≤ 1010..

[프로그래머스] 핸드폰 번호 가리기

문제. 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 phone_number는 길이 4 이상, 20이하인 문자열입니다. 입출력 예 phone_numberreturn "01033334444" "*******4444" "027778888" "*****8888" function solution(phone_number) { // 입력받은 phone_number에서 4개만 빼고 그 숫자만큼 반복하는 반복문을 만든다. // 반복문을 돈 숫자만큼 *을 빈문자열에 추가해주자. // ..