본문 바로가기

Level128

[프로그래머스][자바스크립트][Level1] 두 정수 사이의 합 풀이 /** * 두정수사이의합.js * Level1 * https://programmers.co.kr/learn/courses/30/lessons/12912 */ function solution(a, b) { if (a === b) return a; const min = Math.min(a, b) - 1, max = Math.max(a, b); return ((max * (max + 1))/2) - ((min *(min + 1))/2); } 간단하게 가우스의 합 정리를 활용해서 해결했다. 시각화 2022. 1. 9.
[프로그래머스][자바스크립트][Level1] 나머지가 1이 되는 수 찾기 풀이 /** * 나머지가1이되는수찾기.js * https://programmers.co.kr/learn/courses/30/lessons/87389 */ function solution(n) { for (let i = 2; i < n; i++) { if (n % i === 1) return i; } } 나머지가 1인 수를 찾아서 return 한다. 2022. 1. 9.
[프로그래머스][자바스크립트][Level1] 가운데 글자 가져오기 풀이 /** * 가운데글자가져오기.js * https://programmers.co.kr/learn/courses/30/lessons/12903?language=javascript */ function solution(s) { let answer = ''; const len = s.length; if (len % 2 === 0) { answer += s[len/2 -1]; answer += s[len/2]; } else { answer += s[Math.floor(len/2)]; } return answer; } 짝수면 가운데 2글자를, 홀수면 가운데 1글자를 return 한다. 2022. 1. 9.
[프로그래머스][자바스크립트][Level1] 서울에서 김서방 찾기 풀이 - indexOf 활용 /** * 서울에서김서방찾기.js * https://programmers.co.kr/learn/courses/30/lessons/12919 */ function solution(seoul) { return `김서방은 ${seoul.indexOf("Kim")}에 있다`; } 풀이2 - findIndex 활용 /** * 서울에서김서방찾기.js * https://programmers.co.kr/learn/courses/30/lessons/12919 */ function solution(seoul) { return `김서방은 ${seoul.findIndex((el) => el === "Kim")}에 있다`; } 2022. 1. 9.
[프로그래머스][자바스크립트][Level1] 문자열 내림차순으로 배치하기 1차 시도 - 성공 function solution(s) { return s.split("").sort((a, b) => b.charCodeAt(0) - a.charCodeAt(0)).join(""); } charCodeAt 으로 코드 번호를 비교해서 내림차순으로 정렬했다. 다른 풀이법 function solution(s) { return s.split("").sort().reverse().join(""); } 기본 sort 가 문자열의 유니코드 코드 포인트를 따라서 오름차순 정렬하므로 정렬 후 reverse 를 사용해 해결할 수 있다. 2022. 1. 6.
[프로그래머스][자바스크립트][Level1] 2016년 1차 시도 - 9번, 13번 케이스 실패 // 9번, 13번 테스트 케이스 실패 function solution(a, b) { var mon = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var day = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"]; const acc_mon = [0]; for (let i = 0; i < mon.length - 1; i++) { acc_mon.push(acc_mon[i] + mon[i]); } return day[((acc_mon[a - 1] + b) % 7) - 1]; } 테스트 및 분석 /** * 2016년.test.js */ const solution = require("... 2022. 1. 6.
[프로그래머스][자바스크립트][Level1] 두 개 뽑아서 더하기 /** * 두개뽑아서더하기.js * https://programmers.co.kr/learn/courses/30/lessons/68644?language=javascript */ // combination function solution(numbers) { const numSet = new Set(getCombinationsSum(numbers, 2)); return Array.from(numSet).sort((a, b) => a - b); } function getCombinationsSum(array, selectedNum) { const results = []; if (selectedNum === 1) { return [...array]; } array.forEach((fix, idx, orgArr.. 2022. 1. 6.
[프로그래머스][자바스크립트][Level1][카카오] 실패율 /** * 실패율.js * https://programmers.co.kr/learn/courses/30/lessons/42889 */ function solution(N, stages) { const stageReached = new Array(N+1).fill(0); stages.forEach((stage) => { for (let i = 0; i < stage; i++) { stageReached[i]++; } }); const stageFailed = []; for (let j = 0; j < stageReached.length - 1; j++) { const failureRate = (stageReached[j] - stageReached[j+1]) / (stageReached[j]); stage.. 2022. 1. 5.
[프로그래머스][자바스크립트][Level1] 없는 숫자 더하기 /** * 없는 숫자 더하기 * https://programmers.co.kr/learn/courses/30/lessons/86051?language=javascript */ function solution(numbers) { const numSet = new Set(numbers); let sum = 0; numSet.forEach((num) => sum+=num); return 45 - sum; } console.log(solution([1,2,3,4,6,7,8,0])); console.log(solution([5,8,4,0,6,7,9])); 문제에 겹치는 숫자가 없다고 주어져서 굳이 Set 을 사용할 필요는 없었다. 혹 숫자가 겹쳐서도 주어졌다면 Set 사용이 유의미했겠다. 2022. 1. 4.
[프로그래머스][자바스크립트][Level1] 모의고사 /** * 모의고사 * 완전탐색 */ function solution(answers) { const supoja = [0, 0, 0]; const supojaPattern = [[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]; answers.forEach((val, idx) => { for (let i = 0; i < supojaPattern.length; i++) { if (val === supojaPattern[i][idx%supojaPattern[i].length]) supoja[i]++; } }); const max = Math.max(...supoja); return supoja.reduce((rst, matc.. 2022. 1. 3.
[프로그래머스][자바스크립트][Level1][카카오] 숫자 문자열과 영단어 /** * 숫자 문자열과 영단어 * https://programmers.co.kr/learn/courses/30/lessons/81301?language=javascript */ function solution(s) { var answer = [], str = ""; for (let i = 0; i < s.length; i++) { const numChar = parseInt(s[i]); if (isNaN(numChar)) { str += s[i]; const changedNum = changeStringToInt(str); if (changedNum !== null) { answer.push(changedNum); str = ""; } } else { answer.push(numChar); } } re.. 2022. 1. 2.
[프로그래머스][자바스크립트][Level1] 로또의 최고 순위와 최저 순위 /** * 로또의 최고 순위와 최저 순위 * https://programmers.co.kr/learn/courses/30/lessons/77484 */ function solution(lottos, win_nums) { let min = 7, max = 7, match = 0; const joker = lottos.reduce((acc, num) => { if (num === 0) acc++; return acc; } , 0); const lottosWithoutJoker = lottos.filter((num) => num !== 0); lottosWithoutJoker.forEach((num) => { if (win_nums.some((winNum) => winNum === num)) match++ }.. 2022. 1. 1.