프로그래머스 17

키패드 누르기 / js 풀이

프로그래머스 : 키패드 누르기 https://programmers.co.kr/learn/courses/30/lessons/67256 문제풀이 이번 문제는 프로그래머스의 2020 카카오 인턴십 코딩 테스트에서 출제되었던 문제입니다. 저는 생각보다 오래 걸렸던 문제입니다. 2, 5, 8, 0 숫자들의 위치와 손가락들의 거리를 비교하기 위한 식을 바로 생각해내지 못했습니다 ㅠㅠ 1, 4, 7에 해당하는 왼손 입력 3, 6, 9에 해당하는 오른손 입력 2, 5, 8, 9에 해당하는 가장 가까운손 입력 두 엄지 손가락의 거리가 같다면, 주로 사용하는 손 입력 코드 function solution(numbers, hand) { let answer = ''; let leftThumb = 10, rightThumb =..

멀쩡한 사각형 / js 풀이

프로그래머스 : 멀쩡한 사각형 https://programmers.co.kr/learn/courses/30/lessons/62048 문제풀이 이번 문제는 프로그래머스의 "Summer/Winter Coding 2019" 코딩 테스트에서 출제되었던 문제입니다. 이 문제를 스스로 풀기 위해 이런저런 고민을 다 해보았지만, 결국 구글의 도움을 받을 수 밖에 없었습니다. 이 문제는 단위 사각형으로 이루어진 직사각형의 대각선을 지나는 사각형의 개수를 알아내는 것이 포인트 입니다. 물론 직접 좌표의 개념을 도입하거나 선의 기울기를 활용하여 푼 분들도 있지만, 저로서는 아무리 머리를 싸매도 못했겠다 싶었던 해답이었습니다. 이 문제에 직접 연관이 있는 개념이 기술된 블로그를 함께 첨부하겠습니다. https://m.blo..

신규 아이디 추천 / js 풀이

프로그래머스 : 신규 아이디 추천 https://programmers.co.kr/learn/courses/30/lessons/72410 문제풀이 이번 문제는 카카오 블라인드 채용의 코딩 테스트에서 출제되었던 문제입니다. 풀이는 문제에 제시한 대로 각 단계를 구현하면 되지만, 푸는 방식이 사람마다 다르기 때문에 가지각색의 풀이가 보입니다. 제 풀이는 그다지 좋은 풀이는 아닌것 같네요.. ㅜㅜ 정규식을 아직 제대로 활용하지 못하기 때문에 풀이를 단순 무식하게 푼 것 같습니다. if문에 들어간 level은 단순히 단계를 구분하기 위해 사용한 것으로, 제거하여도 문제는 통과합니다. new_id의 모든 대문자를 대응되는 소문자로 치환합니다. new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(..

폰켓몬 / js 풀이

프로그래머스 : 폰켓몬 https://programmers.co.kr/learn/courses/30/lessons/1845 문제풀이 이번 문제는 중소/중견 기업 채용연계 프로그램 "찾아라 프로그래밍 마에스터" 코딩 테스트에서 출제되었던 문제입니다. 풀이는 생각보다 간단한데요. nums 배열 길이의 n/2과 nums 배열 요소에서 중복값을 제거한 길이를 비교합니다. nums의 n/2 가 더 크다면 중복값을 제거한 종류의 수를 반환하고, 종류가 더 많다면 nums의 n/2 길이를 반환합니다. 이번 풀이에서 첫번째 코드는 제가 풀었던 방식이고, 두번째 코드는 자바스크립트의 Set 객체를 사용한 풀이입니다. Set 은 중복된 값을 허용하지 않는 고유한 객체이며, 수정이나 추가 적용될 때마다 === 와 동일한 연..

K번째수 / js 풀이

프로그래머스 : K번째수 https://programmers.co.kr/learn/courses/30/lessons/42748 문제풀이 풀이는 문제에 주어진 대로 그대로 수행하시면 됩니다. 코드 function solution(array, commands) { let answer = []; // 결과를 담을 배열을 선언 및 초기화 for(let i=0; i a-b); // 오름차순으로 정렬 answer.push(tmp[commands[i][2]-1]); // 결과 배열에 i번째 commands 배열의 3번째 수를 찾아 넣어줍니다 } return answer; } 리뷰 이 문제는 어렵지 않은 문제지만, sort() 함수 부분에서 정확히 a-b 대소관계를 정의해주지 않으면 통과가 되지 않습니다. sort()..

로또의 최고 순위와 최저 순위 / js 풀이

프로그래머스 : 로또의 최고 순위와 최저 순위 https://programmers.co.kr/learn/courses/30/lessons/77484 문제풀이 이번 문제는 프로그래머스에서 상반기에 진행한 "2021 Dev-Matching: 웹 백엔드 개발자" 코딩 테스트에서 출제되었던 문제입니다. 순위나 맞춘 번호, 지워진 번호 등을 신경써야 될 것 같아 복잡해 보이지만 결과물은 의외로 간단하게 도출해 낼 수 있습니다. 지워진 숫자를 카운트합니다. 맞춘 숫자를 카운트합니다. 결과는 [최고등수, 최저등수] 의 형태로 반환하기 때문에, 지워진 숫자가 모두 맞으면 맞출 수 있는 "최고 등수", 모두 틀리면 "최저 등수"가 됩니다. 정답은 [7-가장 많이 맞춘 수, 7-가장 적게 맞춘 수] 코드 function ..

[3차] 파일명 정렬 / js 풀이

프로그래머스 : 파일명 정렬 https://programmers.co.kr/learn/courses/30/lessons/17686 문제풀이 문제풀이 로직은 대략적으로 다음과 같습니다. files에 담긴 파일들을 각각 HEAD, NUMBER, TAIL로 분리합니다. HEAD를 기준으로 비교/정렬을 수행합니다. HEAD가 같다면 NUMBER를 기준으로 비교/정렬을 수행합니다. 코드 function solution(files) { let orderObject = files.map((name, index) => ({name, index})); // sort 적용시 같은 결과 값에 대해 원래 순서를 유지하기 위해 index를 추출하여 묶음 const compare = (a, b) => { let regNum = ..