알고리즘, 자료구조/프로그래머스 23

프로그래머스/핸드폰 번호 가리기/javascript

처음 코드 String.prototype.replaceAt=function(index, char) { var a = this.split(""); for(let i = 0; i < index - 4; i++) { a[i] = char; } return a.join(""); } function solution(phone_number) { var answer = ''; let numLen = phone_number.length; answer = phone_number.replaceAt(numLen, '*'); return answer; } 제시된 phone_number를 인덱스 0부터 뒷 4자리 제외한 인덱스를 찾아서 *를 교체하려고 했다. 구글링 해보니 replace만으로 인덱스 범위를 지정할 수 없어서 아..

프로그래머스/하샤드 수/javascript

처음 코드 function solution(x) { let answer = true; let splitX = x.toString().split(''); let sum = splitX.reduce((acc, cur) => Number(acc) + Number(cur)); if(x % sum !== 0) answer = false; return answer; } 문제를 잘 읽고 그대로 코드로 작성하면 된다. 알면 좋은 내용 문자열로 변환 후 split하여 자릿수를 더하는 것 reduce로 합을 구하는 것 기본값은 true이고 하샤드 수가 아닐 때만 확인해서 return 하는 것

프로그래머스/3진법 뒤집기/javascript

잘 못 접근 한 코드 function solution(n) { var answer = 0; let decimalToTernary = []; let TernaryToDecimal = []; // 10진법 > 3진법 while(n > 0) { let result = (n % 3); decimalToTernary.push(result); n /= 3; } console.log(decimalToTernary); // 앞뒤 반전 // 3진법 > 10진법 return answer; } 결괏값 [ 0, 0, 2, 1.6666666666666667, 0.5555555555555556, 0.1851851851851852, 0.0617283950617284, 0.0205761316872428, 0.0068587105624..

프로그래머스/음양 더하기/javascript

상대적으로 쉽게 생각되는 문제를 만났다, 6달 전의 나라면 어림없었을 거다. 기쁜 마음으로 풀이를 남겨본다. 답을 맞혔더라도 다른 분들 코드를 찾아보는 것을 잊지 말자, 다양한 코드 읽는 것은 언제나 중요한 일! 나의 코드 function solution(absolutes, signs) { var answer = 123456789; let valueTemp = []; let valueFinal = []; // false -, true + // 1. 불리언 값을 연산자로 변환한다. const exchangeSigns = signs.map( currentValue => currentValue ? '+' : '-'); // 2. 주어진 숫자에 변환한 연산자를 붙여주고, 숫자와 연산자를 붙인 값을 valueTe..

프로그래머스/로또의 최고 순위와 최저 순위/javascript

어떻게 풀어야 할지 생각하는 순서를 다듬기 위해 노력한 문제라서 기록에 남겨본다. 정답도 아니고 논리에 구멍이 숭숭 난 나의 처음 코드 function solution(lottos, win_nums) { var answer = []; // 찍은 번호와 당첨 번호를 비교한다 // 같으면 카운트 1, 다르면서 0이면 카운트 1 => 최고 순위 // 같으면 카운트 1, 다르면서 0이 아니면 패쓰 => 최저 순위 let count = 0; lottos.forEach( element => { if(win_nums.indexOf(element) !== -1) { count++; } else if (win_nums.indexOf(element) === -1 && element === 0) { count++; } })..

[프로그래머스/javascript] k번째수

풀이 1) 배열 array가 주어지면, 주어진 조건에 맞게 배열을 자르고 정렬한 뒤 결괏값을 찾아야 하는 문제이다. 2) 배열을 순회하면서 자를 수 있어야 하고, 정렬할 줄 알아야 한다. 통과 못한 코드 function solution(array, commands) { var answer = []; for(let i = 0; i < commands.length; i++) { let sliceArray = array.slice(commands[i][0]-1, commands[i][1]); sliceArray.sort(); answer.push(sliceArray[commands[i][2]-1]); } return answer; } 통과한 코드 function solution(array, commands) ..

[프로그래머스/javascript/카카오 인턴] 키패드 누르기

문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 #키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 1. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 2. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 3. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 4. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가..

[프로그래머스/javascript] 문자열 내 p와 y의 개수

문제 정답 처리된 코드(1) function solution(s){ var answer = true, p_cnt=0, y_cnt=0; var tmp = s.toUpperCase(); for(let x of tmp){ if(x === 'P') p_cnt++; else if(x === 'Y') y_cnt++; } if(p_cnt === y_cnt) answer=true; else answer=false; return answer; } 문제 이해 1) 문자열을 모두 대문자로 만들어서 하나하나 확인한다. 2) P일 때와 Y일 때 각각 1씩 카운트해서 개수가 같은지 다른지 확인한다. tmp 변수를 만들지 않고 s.toUpperCase(); 만 처리하고 for 문을 돌렸더니 테스트 케이스에 모두 통과되지 않았음. ..

반응형