본문 바로가기

Research/Coding Test24

해시_전화번호 목록 나의 풀이(효율성 문제 탈락) function solution(phone_book) { var answer = true; for(let i = 0; i < phone_book.length; i++) { for(let j = i + 1; j < phone_book.length; j++) { if (phone_book[j].split(phone_book[i])[0] === "") { return false } if (phone_book[i].split(phone_book[j])[0] === "") { return false } } } return answer; } console.log(solution(["119", "97674223", "1195524421"])) 테스트 코드는 모두 통과되었지만, 시간 차원.. 2023. 11. 18.
해시_폰켓몬 나의 풀이 function solution(nums) { const dict = {}; nums.forEach(el => { if (dict[el]) { dict[el]++; } else { dict[el] = 1; } }) const dictLen = Object.values(dict).length; const halfNum = Math.floor(nums.length/2) return dictLen < halfNum ? dictLen : halfNum } 배열을 루프돌면서 dict에 쌓아주고, 그 값 종류의 개수가 주어진 총 폰켓몬 n/2 수보다 적으면 리턴하고 그렇지 않으면 n/2 수를 리턴한다. 타인의 풀이 function solution(nums) { const max = nums.length .. 2023. 11. 17.
프로그래머스_lv0_안전지대 문제 해결 방법 안전지대 문제의 핵심은 폭탄을 기준으로 이전, 현재, 다음 요소를 안전지대에서 해제하는 것이다. 이는 현재 배열 뿐만 아니라 전후 배열도 마찬가지다. 그래서 직관적으로 전, 현, 다음 요소를 안전지대의 상태인 0에서 비안전지대(내가 정함) 상태 2로 바꿔주었다. 그리고 2차 forEach 반복문에서 forEach의 두 번째 매개변수로 idx을 사용할 수 있기에 이를 사용하여 전후 배열에 접근하여 동일하게 상태 변환 작업을 해주었다. function solution(board) { board.forEach((vertEl, vertIdx) => { vertEl.forEach((horEl, horIdx) => { // 폭탄 발견 시 if (horEl === 1) { // 같은 hor, 이전 .. 2023. 11. 17.
해시_완주하지 못한 선수 나의 접근 방식 function solution(participant, completion) { const dictComp = {} const dictPart = {} completion.forEach(el => { if(dictComp[el]) { dictComp[el]++; } else { dictComp[el] = 1 } }) participant.forEach(el => { if(dictPart[el]) { dictPart[el]++; } else { dictPart[el] = 1 } }) const keys = Object.keys(dictPart) for(let i = 0; i < keys.length; i++) { if(!dictComp[keys[i]]) { return keys[i] } i.. 2023. 11. 16.