PS
제코베 JS 100제 / 57 / 1의 개수
0부터 1000까지의 1의 개수를 세는 프로그램을 만들려고 합니다. 예를 들어 0부터 20까지 1의 개수를 세어본다면 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19에 각각 1이 들어가므로 12개의 1이 있게 됩니다. 11은 1이 2번 들어간 셈이죠. 그렇다면 0부터 1000까지 수에서 1은 몇 번이나 들어갔을까요? 출력해 주세요. function countOne(n) { let cnt = 0; for (let i = 0; i el === "1").length; } console.log(cnt); } countOne(1000);
제코베 JS 100제 / 56 / 객체의 함수 응용
다음의 객체가 주어졌을 때 한국의 면적과 가장 비슷한 국가와 그 차이를 출력하세요. function solution(country_area) { // 한국의 면적 저장 const korea_area = country_area["korea"]; // 객체에서 한국에 대한 정보 삭제 delete country_area.korea; // [나라, 면적]을 배열로 저장 let area_entries = Object.entries(country_area); // 면적의 값만 배열로 저장 let areas = Object.values(country_area); for (let i = 0; i < areas.length; i++) { // 면적의 차이 구하기 areas[i] = Math.abs(areas[i] - k..
제코베 JS 100제 / 55 / 하노이의 탑
하노이의 탑은 프랑스 수학자 에두아르드가 처음으로 발표한 게임입니다. 하노이의 탑은 A, B, C 3개의 기둥과 기둥에 꽂을 수 있는 N개의 원판으로 이루어져 있습니다. 이 게임에서 다음의 규칙을 만족해야 합니다. 1. 처음에 모든 원판은 A 기둥에 꽂혀 있다. 2. 모든 원판의 지름은 다르다. 3. 이 원판은 세 개의 기둥 중 하나에 반드시 꽂혀야 한다. 4. 작은 원판 위에 큰 원판을 놓을 수 없다. 5. 한 번에 하나의 원판(가장 위에 있는 원판)만을 옮길 수 있다. 이 규칙을 만족하며 A 기둥에 있는 원반 N개를 모두 C 원반으로 옮기고 싶습니다. 모든 원반을 옮기기 위해 실행되어야 할 최소 원반 이동 횟수를 계산하는 프로그램을 완성해 주세요. const route = []; function ha..
제코베 JS 100제 / 54 / 연속되는 수
은주는 놀이공원 아르바이트를 하고 있다. 은주가 일하는 놀이공원에서는 현재 놀이공원 곳곳에 숨겨진 숫자 스탬프를 모아 오면 선물로 주는 이벤트를 하고 있다. 숫자 스탬프는 매일 그 수와 스탬프에 적힌 숫자가 바뀌지만 그 숫자는 항상 연속된다. 그런데 요즘 다른 날에 찍은 스탬프를 가지고 와 선물을 달라고 하는 손님이 늘었다. 스탬프에 적힌 숫자가 공백으로 구분되어 주어지면 이 숫자가 연속수인지 아닌지 "YES"와 "NO"로 판별하는 프로그램을 작성하시오 입력1 1 2 3 4 5 출력 1 YES 입력2 1 4 2 6 3 출력2 NO function isConsecutiveNumber(str) { let arr = str.split(" ").map(Number); for (let i = 1; i < arr...
제코베 JS 100제 / 53 / 괄호 문자열
괄호 문자열이란 괄호 기호인 '{', '}', '[', ']', '(', ')' 와 같은 것을 말한다. 그중 괄호의 모양이 바르게 구성된 문자열을 바른 문자열, 그렇지 않은 문자열을 바르지 않은 문자열이라 부르도록 하자. (())와 같은 문자열은 바른 문자열이지만 ()())와 같은 문자열은 바르지 않은 문자열이다. 입력으로 주어진 괄호 문자열이 바른 문자열인지 바르지 않은 문자열인지 "YES"와 "NO"로 구분된 문자열을 출력해보자. function isValidBracketString(str) { if (!str.length) return; // 빈 문자열일 경우 let left_bracket = [ ["(", 0], ["{", 0], ["[", 0], ]; let right_bracket = [ ["..
제코베 JS 100제 / 52 / quick sort
function quickSort(arr) { if (arr.length parseInt(n, 10)); console.log(quickSort(array)); 위의 코드에선 pivot을 배열의 가장 첫번째 값으로 잡았지만, 중간값으로 잡는게 좋다고 한다. quick sort는 정렬이 불필요한 배열이 들어와도 수행하게 되는데, 이 경우 최악의 경우로 O(n^2)의 시간 복잡도를 가지게 된다. 어떤 배열이 들어올지 미지수인 상태에서 quick sort를 구현하게 된다면, 그나마 최소나 최대값이 아닌 확률이 가장적은 중간값으로 pivot을 잡는것이다.