전체 글

전체 글

    Programmers / Level 2 / 숫자 블록 / JS

    문제 설명 그렙시에는 0으로 된 도로에 숫자 블록을 설치하기로 하였습니다. 숫자 블록의 규칙은 다음과 같습니다. 블록의 번호가 n 일 때, 가장 처음 블록은 n * 2번째 위치에 설치합니다. 그다음은 n * 3, 그다음은 n * 4, ...로 진행합니다.만약 기존에 블록이 깔려있는 자리라면 그 블록을빼고 새로운 블록으로 집어넣습니다. 예를 들어 1번 블록은 2,3,4,5, ... 인 위치에 우선 설치합니다. 그다음 2번 블록은 4,6,8,10, ... 인 위치에 설치하고, 3번 블록은 6,9,12... 인 위치에 설치합니다. 이렇게 3번 블록까지 설치하고 나면 첫 10개의 블록은 0, 1, 1, 2, 1, 3, 1, 2, 3, 2이됩니다. 그렙시는 길이가 1,000,000,000인 도로에 1번 블록부터 ..

    Programmers / Level 1 / 성격 유형 검사하기 / JS

    문제 설명 나만의 카카오 성격 유형 검사지를 만들려고 합니다. 성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다. 지표 번호 성격 유형 1번 지표 라이언형(R), 튜브형(T) 2번 지표 콘형(C), 프로도형(F) 3번 지표 제이지형(J), 무지형(M) 4번 지표 어피치형(A), 네오형(N) 4개의 지표가 있으므로 성격 유형은 총 16(=2 x 2 x 2 x 2)가지가 나올 수 있습니다. 예를 들어, "RFMN"이나 "TCMA"와 같은 성격 유형이 있습니다. 검사지에는 총 n개의 질문이 있고, 각 질문에는 아래와 같은 7개의 선택지가 있습니다. 매우 비동의 비동의 약간 비동의 모르겠음 약간 동의 동의 매우 동의 각 질문은 1가지 지표로 성..

    제코베 JS 100제 / 60 / 번호 매기기

    새 학기가 되어 이름을 가나다 순서대로 배정하고 번호를 매기려고 합니다. 데이터에 입력된 이름을 아래와 같이 출력해 주세요. function numbering(students) { students.sort(); students.forEach((student, idx) => { console.log(`번호: ${idx + 1}, 이름: ${student}`); }); } const students = [ "강은지", "김유정", "박현서", "최성훈", "홍유진", "박지호", "권윤일", "김채리", "한지호", "김진이", "김민호", "강채연", ]; numbering(students);

    제코베 JS 100제 / 59 / 빈칸채우기

    총 문자열의 길이는 50으로 제한하고 사용자가 문자열을 입력하면 그 문자열을 가운데 정렬을 해주고, 나머지 빈 부분에는 '='을 채워 넣어주세요. function fillBlank(str) { let result = ""; result += "=".repeat((50 - str.length) / 2); result += str; result += "=".repeat((50 - str.length) / 2); console.log(result); } const str = "hi"; fillBlank(str);

    Algorithm / 정렬 / Radix Sort (기수 정렬)

    기수 정렬 // 뒤에서 idx 번째 자릿수를 얻는 함수 function getDigit(num, idx) { // return Math.floor(Math.abs(num) / Math.pow(10, i)) % 10; return Number(String(num).at(-(idx + 1))) || 0; } // 숫자의 자릿수가 몇인지 return 하는 함수 function digitCount(num) { if (num === 0) return 1; // return Math.floor(Math.log10(Math.abs(num))) + 1; return String(num).length; } // 가장 큰 자릿수를 찾는 함수 function mostDigit(nums) { let max = 0; for (..

    Algorithm / 정렬 / Quick Sort (퀵 정렬)

    퀵 정렬 function quickSort1(arr) { if (arr.length { [array[i], array[j]] = [array[j], array[i]]; }; let pivot = arr[start]; let swap_idx = start; // 마지막에 위치해야 할 인덱스 for (let i = start + 1; i arr[i]) { swap_idx++; swap(arr, swap_idx, i); } } swap(arr, start, swap_idx); return swap_idx; } function quickSort2(arr, left = 0, right = arr.length - 1) { if (left < right) {..