저 많은 사람 중에 '나'

    [프로그래머스/JS] 모의고사

    문제링크 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 배운점 자바스크립트에서 배열의 최대, 최소 값을 얻기 위한 방법은 count_max = Math.max(...count) 위와 같다. 스프레드 연산자를 사용한다. 문제풀이 function solution(answers) { var answer = []; let arr1 = [1,2,3,4,5] let arr2 = [2,1,2,3,2,4,2,5] let arr3 = [3,3,1,1,2,2,4,4,5,5] let count = new Array(3) cou..

    [프로그래머스/JS] 완주하지 못한 선수

    문제링크 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 배운점 자바스크립트 Map 은 key, value 값에 for of 로 접근 할 수 있었다. // Map(3) { 'leo' => 1, 'kiki' => 0, 'eden' => 0 } for (const [key, value] of report) { if (value > 0) { answer = key; } 문제풀이 participant = ["leo", "kiki", "eden"]; completion = ["eden", "kiki..

    백준/JS 2738 행렬 덧셈

    문제 유형 기본문제 배운점 3 3 1 1 1 2 2 2 0 1 0 3 3 3 4 4 4 5 5 100 위 입력을 다음코드로 2차원 배열에 넣을 수 있다. 문제도 문제인데 입출력이 너무 어렵다. var input = fs .readFileSync(BOJkey ? "./자바스크립트로/2738/input.txt" : "./dev/stdin") .toString() .trim() .split("\n") .map((x) => x .trim() .split(" ") .map((x) => +x) ); 기존 코드는 array 에 바로 arr 를 넣어줬는데 문제가 생겼다. 이는 shallow copy가 되어서 3 X 3 배열 이라고 할때 첫번째줄을 수정하면 2번째 3번째 배열 모두 수정이 되는 오류가 발생했다. cons..

    프로그래머스/JS 키패드 누르기

    문제링크 문제 분류 구현 배운점 다음 문제에서 keys 객체의 번호별 [x,y] 를 저장함으로써 2차원 배열을 굳이 선언하지 않아도 되었다. const keys = { 1: [0, 0], 2: [0, 1], 3: [0, 2], 4: [1, 0], 5: [1, 1], 6: [1, 2], 7: [2, 0], 8: [2, 1], 9: [2, 2], "*": [3, 0], 0: [3, 1], "#": [3, 2], }; 문제 풀이 const keys = { 1: [0, 0], 2: [0, 1], 3: [0, 2], 4: [1, 0], 5: [1, 1], 6: [1, 2], 7: [2, 0], 8: [2, 1], 9: [2, 2], "*": [3, 0], 0: [3, 1], "#": [3, 2], }; const..

    프로그래머스/JS 소수 만들기

    문제 분류 기본문제? 배운점 key = [1,2,3] 일때 바로 저런식으로 a,b,c 변수에 할당할 수 있었다. for (let [a, b, c] of key) for in 도 될까 해서 테스트 해봤는데 var obj = { a: 1, b: 2, c: 3, }; for (var [prop, value] in obj) { console.log(prop); //a console.log(value); //undefined } 안된다. 다음 처럼 접근을 해야한다. for (var prop in obj) { console.log(prop, obj[prop]); // a 1, b 2, c 3 } 내 풀이 nums = [1, 2, 3, 4]; function combination(arr, selectNum) { le..

    자바스크립트 순열 , 조합 , 중복조합

    코드 출처 순열 function permutation(arr, selectNum) { let result = []; if (selectNum === 1) return arr.map((v) => [v]); arr.forEach((v, idx, arr) => { const fixer = v; const restArr = arr.filter((_, index) => index !== idx); const permuationArr = permutation(restArr, selectNum - 1); const combineFixer = permuationArr.map((v) => [fixer, ...v]); result.push(...combineFixer); }); return result; } 이해가 되긴 ..

    프로그래머스/JS 신고결과받기 (2)

    프로그래머스/JS 신고결과받기 (2)

    2개의 풀이를 봤는데 너무 배울점이 많아서 두개의 글을 쓰게 되었습니다. 배운점 중복 제거 우선은 파이썬으로 코테준비를 할때, set을 사용해서 중복을 제거했는데, 자바스크립트도 동일합니다. // 중복 제거 후, 유저 ID, 유저가 신고한 ID 분리 let reports = [...new Set(report)].map((el) => el.split(" ")); 우선적으로 new Set(배열) 을 통해서 중복을 제거하고, newArr = [...set] 스프레드 연산자를 사용하여 다시 배열로 만들어줍니다. const arr = ['A', 'B', 'C', 'A', 'B']; const set = new Set(arr); const newArr = [...set]; console.log(newArr) Map..

    프로그래머스/JS 신고결과받기 (1)

    배운점 빈 배열 자바스크립트에서 0으로된 빈배열을 생성하기 위해서는 다음 처럼 Array를 생성한다. const answer = new Array(id_list.length); // [ ] 그 다음 fill 메소드를 사용하여 0을 채워주는 것이다. answer.fill(0); //[ 0, 0, 0, 0 ] const 배열 , 객체 나는 const로 선언을 하면 절대 바꿀 수 없다고 생각했다. 그런데 그게 아니였다. const 는 재선언을 할 수 없는 것이다. 배열의 pop push , 객체의 키값 추가 모든 것이 가능했다. 아예 잘 못이해하고 있었다. const report_list = {}; id_list.map((user) => { report_list[user] = []; }); console.lo..

    백준/JS 10828

    https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 배운점 배열에 값을 추가하는 함수 push : 배열의 맨 뒤의 값을 추가 unshift : 배열의 맨 앞에 값을 추가 배열의 값을 제거하는 함수 pop : 배열의 맨 끝에 값을 제거한다. shift : 배열의 맨 앞의 값을 제거한다. console.log()을 여러번 호출하는 것은 시간 초과의 원인이 된다. 또한 기존에는 forEach 문을 사용했는데 이 또한 시간초과가 났다. ..

    백준/JS 10926

    https://www.acmicpc.net/problem/10926 10926번: ??! 준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때 www.acmicpc.net 배운점 백준 입출력에 간혹 ('\n') 개행이 맨뒤에 있는 경우가 있으므로 trim() 메소드를 사용하여 없애주자. const fs = require("fs"); BOJkey = true; if (BOJkey) { var input = fs .readFileSync("./자바스크립트로/10926/input.txt") .toString() .trim(); } else { var input = fs...