본문 바로가기

LV2

6/3[문제풀이] 프로그래머스 Lv2 예상 대진표 [문제풀이] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 function solution(n,a,b) { var answer = 0; while(Math.abs (a-b) >= 1 ) { answer++; a = a % 2 === 0 ? a / 2 : Math.floor(a / 2) + 1; b = b % 2 === 0 ? b / 2 : Math.floor(b / 2) + 1; } return answer; } Colored by Color Scripter cs 문제의 접근 방식이 무엇보다 중요했다고 본다. 문제를 꼼꼼히 읽어 보는 것도... 문제에서 요구하는 a, b가 만나는 사람마다 이겨서 결승전에서 올라오는 라운드(?) 카운트를 구하는 문제이다. a, b가 만나기 위해.. 더보기
6/1[문제풀이] 프로그래머스 Lv2 프린터 문제풀이 처음에 이 문제를 보고 꼼꼼히 읽어보지 않아서 꽤 애를 먹었다. 중요도를 1이 제일 중요한 것으로 이해해서 한 동안 왜 이렇게 입출력 예시가 되어있는지 이해하는데 힘들었다. 우선 순위에 따라 정렬을 하더라도 결국에는 return 값이 기존 배열의 index 값을 return 하여야 했기에 for문을 사용해서 객체 형태로 배열 요소들에게 각각 id를 부여하였다. 그리고 맨 앞의 요소들을 shift를 이용해서 빼내고 이를 filter 함수를 이용해서 맨 앞과 그 뒤에 있는 value 값들을 비교해서 우선 value 값들이 존재한다면 다시 뒤로 push 해주었고 그렇지 않은 경우에는 빈 배열(resultArr)에 차근차근히 우선순위 순서대로 push 해주어 이를 id와 location을 비교하는 식으.. 더보기
5/28[문제풀이] 프로그래머스 Lv2 타켓 넘버 문제풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 function solution(numbers, target) { const arr = numbers.slice(); const len = arr.length; let result = []; let result2 = [0]; let n = 0; for (let x = 0; x 더보기
5/27[문제풀이] 프로그래머스 Lv2 가장 큰 수 문제풀이 1 2 3 4 5 6 7 8 9 10 11 12 function solution(numbers) { var answer = ''; numbers = numbers.map(e => e + "") numbers.sort((a,b) => (b+a) - (a+b)) answer = numbers.join('') return answer[0] === "0" ? "0" : answer; } Colored by Color Scripter cs 문제에서 원하는 것은 변수로 들어오는 배열에 있는 값들로 만들 수 있는 가장 큰 수를 구하는 것이기에 단순히 sort를 사용하여야 겠다고 생각했다. 그런데 그렇게만 생각하니 코드가 너무나 길어지고 효율성 테스트도 통과를 하지 못해서 다시 생각을 바꾸었다. sort를 쓰.. 더보기
5/25[문제풀이] 프로그래머스 Lv2 피보나치 수 문제풀이 1 2 3 4 5 6 7 8 9 10 function solution(n) { var answer = 0; let setNumber = [0,1]; for(let x=2; x 더보기
5/24[문제풀이] 프로그래머스 Lv2 2개 이하로 다른 비트 문제 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 function solution(numbers) { const answer = []; for (let number of numbers) { if (number % 2 === 0) answer.push(number + 1); else { const etc = [...number.toString(2)]; if (etc.every((e) => e === "1")) { etc[0] = "10"; } else { for (let x = etc.length - 1; x >= 0; x--) { if (etc[x] === "0") { etc[x] = "1"; etc[x + 1] = "0"; .. 더보기
5/20[문제풀이] 프로그래머스 Lv2 수식 최대화 이게 Lv2 라는 것이 믿기지 않았다. 푸는데 생각보다 오래 걸렸고 구글링을 통해 도움을 받았다. 문제풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 function solution(expression) { let answer = 0; let operator = expression.replace(/[0-9]/g,""); // 연산자 추출 let uniqueOperator = Array.from(new Set(operator)); // 연산자 중복 제거 및 배열에 담기 let checkLi.. 더보기
5/19[문제풀이] 프로그래머스 Lv2 다음 큰 숫자 문제 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 function solution(n) { var answer = 0; const result = n.toString(2).match(/1/g).length; // console.log(result) while(n++){ if(n.toString(2).match(/1/g).length === result) { return n } } } Colored by Color Scripter cs 그 동안 문제를 풀고, 다른 사람들의 문제 풀이를 보면서 정규표현식을 공부해서 잘 적용하고 싶다고 생각해서 조금씩 공부했었는데 처음으로 사용 할 수 있었던 문제였던 것 같다. n이 이진수로 변화 된 값에 1이 몇 개인지 확인 후 while 문으로 계속 n을 기.. 더보기