본문 바로가기

주5일알고리즘

(8)
Programmers : 음양 더하기 with JS - 어렵지 않게 풀었다. function solution(absolutes, signs) { var newArr = absolutes.map((item, index) => { if(signs[index]==true){ return item; }else{ return -item; } }) return newArr.reduce((arr, cur) => arr + cur); } function solution(absolutes, signs) { return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0); } 본인도 위 풀이처럼 reduce를 활용하려 했으나 중간에 if 문을 넣는게 지저분해 보일거 같았는데, 이렇게 하니 깔끔한거..
Programmers : 없는 숫자 더하기 with JS function solution(numbers) { let box = [0,1,2,3,4,5,6,7,8,9]; let answer = 45; box.map((item) => { if(numbers.includes(item)){ answer -= item; } }) return answer; } function solution(numbers) { return 45 - numbers.reduce((cur, acc) => cur + acc, 0); } reduce를 쓰면 뭔가 더 간단해질 거 같았었는데, 역시나 이렇게 간단해질 수 있었구나 싶었다. 주어진 배열의 값들을 끄집어내면서 다 더한 값을, 0~9까지의 숫자를 더한 값(=45)에서 빼면, 0~9까지의 숫자 중 없는 걸 다 더한 것과 같은 값이 나옴. #..
Programmers: 크레인 인형뽑기 게임 with JS - 못풀었다. 뽑아서 저장하는 것 까지는 어떻게 한거 같은데, 그 후에 중복된걸 제거하는 부분에서 time이 over 되었다. (중복된걸 제거할 때 [1,2,2,1]의 경우 2,2가 사라지고 1,1도 사라질 수 있는데, 그럴 때 어떻게 구현해야 할 지 감이 안잡힘) function solution(board, moves) { var answer = 0; var samllbox = []; var box = []; var moves = moves.map(i => i-1); for(var i = 0; i
Programmers: 키패드 누르기 with JS 못풀었다. function solution(numbers, hand) { var newNumbers = numbers.map(i => i === 0 ? 11 : i); var left = [1,4,7,10]; var lefthand = 10; var right = [3,6,9,12]; var righthand = 12; var middle = [2,5,8,11]; var varHand = hand == 'right' ? 'R' : 'L'; var L_D; var R_D; return newNumbers.map(item => { if(left.includes(item)){ lefthand = item; return answer += 'L'; } if(right.includes(item)){ righthan..
Programmers: 숫자 문자열과 영단어 with JS function solution(s) { var answer = 0; const letter = ['zero', 'one', 'two', 'three', 'four','five','six','seven', 'eight', 'nine','zero'] String.prototype.replaceAll = function(org,dest) { return this.split(org).join(dest); } for(let i = 0; i
Programmers: 신규 아이디 추천 with JS 못풀었다. function solution(new_id) { var answer = ''; var step1 = new_id.toLowerCase(); var step2 = step1.match(/\w\-\.\d\_/); var step3 = step2.replace(/\..+/g,'.'); var step4 = step3.replace(/\.,'').replace(/.\s*$/,''); var step5 = if(step4===''){ return 'a' }else{ return step4; } var step6 = if(step5.length >= 16){ return step5.slice(0,15).replace(/.\s*$/,''); }else{ return step5; } var step7 = ..
Programmers: 로또의 초고 순위와 최저 순위 with JS function solution(lottos, win_nums) { var answer = []; //lottos랑 win_nums랑 비교해서 같은게 몇개인지 갯수가 나와야하고 if n=3 //7-n=순위 var match = 0; var zero = 0; for(var i of lottos){ if(i===0) { zero += 1 } for(var j of win_nums){ if(i===j){ match += 1; } } } if(match===0){ answer = [7-(match+zero), 6]; if(zero===0){ answer = [6, 6] } } else { answer = [7-(match+zero), 7-match] } return answer; } function soluti..
Programmers: 신고 결과 받기 with JS 1시간 정도 고민했는데 결국 못풀었다. level1 부터 이렇게 막히다니 앞으로가 걱정이 되지만 계속해보자 function solution(id_list, report, k) { var answer = []; // 중복 값 제거 = 여러번 신고한거 제거 var valid_report = []; for(int i = 0; i{ report_list[user] = [] //key로 userid를 value로 빈 배열을 가지는 객체 }) report.map((user)=>{ const [user_id, report_id] = user.split(' ') if(!report_list[report_id].includes(user_id)){ report_list[report_id].push(user_id) } })..