javascript21 [프로그래머스] 64065번: 튜플 (JavaScript) 생각 과정 배열(같은 것)이 여러 개 있지만, 값은 하나씩 늘어나는 형태이고, 순서는 처음의 순서를 차례대로 기억한다. 이 때, 중복은 없다. 중복은 없다는 것에서 Set 자료구조가 가장 먼저 떠올랐고, 그게 정답이었다. function ascendingOrder(targetArr) { return targetArr.slice().sort((a, b) => a.length - b.length);}function parseTuple(targetArr) { const strArr = targetArr.split("},{"); const result = []; strArr[0] = strArr[0].slice(2); strArr[strArr.length - 1] = strArr[strArr.len.. 2025. 7. 8. [프로그래머스] 42888번: 오픈 채팅방 (JavaScript) 생각 과정 그냥 단순히 로그를 남기는 건 줄 알고 정말 쉽다고 생각했었는데... 닉네임 바꾸거나 하면 전부 다 변경해야 하는 상황이 생겨서 많이 고생한 문제이다. 누가 시스템을 이렇게 만들어 1. 유저의 이름과 uid를 저장하는 객체를 만들자. 2. 접속 / 나감 메세지를 기록할 배열도 만들자. 3. 객체와 배열을 call-by-reference와 비슷한 방식으로 사용하자.(JS는 모든 값을 call-by-value 방식으로 처리하지만, 객체와 배열 같은 참조형 데이터는 참조값(reference)를 값으로 전달하기 때문에 가능하다) function changeLog(userData, userLog) { for (let i = 0; i 2025. 7. 8. [프로그래머스] 67256번: 키패드 누르기 (JavaScript) 생각 과정 1. 왼쪽 열의 1 4 7은 반드시 왼손, 오른쪽 열의 3 6 9는 반드시 오른손으로 입력한다. 2. result는 let result = ""로 값을 할당하고, 계산한 결과로 나온 L 혹은 R을 +해준다. 3. "두 손가락의 거리가 같다면" = 거리를 계산하고, if문으로 이를 비교할 필요가 있다. function findPos(num, phone, hand) { if (hand === "left") { for (let i = 0; i rightDist) { rightPos = [depth, 1]; answer += "R"; } else { if (hand === "left") { leftPos = [depth, 1]; ans.. 2025. 7. 8. [프로그래머스] 17682번: 다트 게임 (JavaScript) 생각 과정 고생 깨나 했다. 입출력 예제를 통해 중요시 여겼던 점은 스타상 (*) 스타상의 경우 자신과 바로 뒤 점수를 2배 처리하는데, 이 때문에 처음부터 점수 처리는 가장 뒤부터 처리해야 한다고 생각했고, 제곱이 되는 부분은 Math.pow 메서드 사용하면 될 것 같았다. 간과했던 부분은 0점부터 10점까지 나올 수 있다는 것. 배열의 해당 요소, 1문자로 읽어오려고 했기 때문에 시간이 정말 많이 걸렸고 오류 이유도 몰랐다. parseInt 메서드를 사용하거나, 아니면 아예 10인지 아닌지 검증하는 if를 만들어 문제를 해결해보자. function calculator(arr, sharp) { let temp1 = parseInt(arr); let temp2 = ''; let result = 0.. 2025. 7. 4. [프로그래머스] 64061번: 크레인 인형뽑기 게임 (JavaScript) 생각 과정 마치 게임같은 구현 문제. 예전에 만들었던 C++ 스네이크 게임 생각나서 재밌게 풀었다. 인형뽑기 통은 차원 배열로 이루어져 있고, 그 이름은 board다. board[세로][가로]와 같이 접근할 수 있고, 선택한 가로 번호는 moves - 1. 세로 번호는 0에서 1씩 늘어나며 배열의 요소를 탐색한다. 0이 아닌 요소(= 인형!)를 찾으면 해당 요소를 바구니에 담으며, 이 바구니는 스택처럼 이루어져 있으니 push와 pop 메서드를 활용하면 될 것이다. 바구니에 이미 들어있던 것과, 지금 추가한 것이 같다면 터져서 score가 2만큼 늘어난다. 이후, 배열에서 뽑은 인형 칸은 숫자 0이 들어갈 것이고, 다음 루프를 실행한다... ... 2중 for문은 각각 moves만큼, board의 세로 .. 2025. 7. 4. [프로그래머스] 72410번: 신규 아이디 추천 (JavaScript) 생각 과정 이젠 정말 정규표현식 뿐이야 function solution(new_id) { let answer = ''; // 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. answer = new_id.toLowerCase(); // 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. answer = answer.replace(/[^a-z0-9-_.]/g, ""); // 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. answer = answer.replace(/(\.)+/g, "."); // 4단계 new_id에서 마침표(.)가 처음이나 끝에 .. 2025. 7. 4. 이전 1 2 3 4 다음