목록algorithm (41)
2020.코딩일지
문자열을 입력받아 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 (숫자와 공백을 제외한 나머지) 문자열의 길이로 나눈 값을 정수로 반올림하여 리턴해야 합니다. 입출력예시 더보기 //입출력예시 let output = numberSearch('Hello6 '); console.log(output); // --> 1 output = numberSearch('Hello6 9World 2,'); console.log(output); // --> 2 output = numberSearch('Hello6 9World 2, Nic8e D7ay!'); console.log(output); // --> 2 👻 function numberSearch(str) { const digits = '0123456789'; if ..
문자열을 입력받아 아이소그램인지 여부를 리턴해야 합니다. 아이소그램(isogram)은 각 알파벳을 한번씩만 이용해서 만든 단어나 문구를 말합니다. 입출력예시 더보기 //입출력예시 let output = isIsogram('aba'); console.log(output); // false output = isIsogram('Dermatoglyphics'); console.log(output); // true output = isIsogram('moOse'); console.log(output); // false 👻 if (cache[strLowered[i]]) 이게 무슨소리냔... ? 키값으로 넣어놓고 있으면 false뱉 그런데 꼭 {a:true} 이렇게 쌍으로 해야하는건가? {a:4}가능 {a:1} 가..
수를 입력받아 제곱근 값을 소수점 두 자리까지 리턴해야 합니다. 최대 소수점 둘째 짜리까지 구합니다. (소수점 셋째 자리에서 반올림) Math.sqrt 사용은 금지됩니다. 힌트 소수점 처리는 javascript 표준 내장 객체인 Number를 검색해 봅니다. (js decimal places limit 또는 자바스크립트 소수점 자리수) 항상 타입을 주의하여야 합니다. 각 자리수(1, 0.1, 0.01, 0.001)마다 (목표값을 넘지 않는) 근사값을 구하는 방식이 있습니다. 제곱근을 구하는 방법 중 바빌로니아 법이 있습니다. 바빌로니아 법의 점화식(recurrence formula)을 이해할 수 있다면, 해당 식을 이용해 문제를 풀어도 좋습니다. 입출력예시 더보기 //입출력예시 let output = c..
두 수(num1, num2)를 입력받아, num1를 num2로 나눈 나머지를 리턴해야 합니다. 입출력예시 더보기 //입출력예시 let output = modulo(25, 4); console.log(output); // --> 1 👻하 function modulo(num1, num2) { if (num2 === 0) { //num2가 0이면, 나눌수없으니까 return 'Error: cannot divide by zero'; } while (num1 >= num2) { //num1이 큰경우, 계속뺄수있다. num1 -= num2; } //num1이 작은경우, 또는 0일경우 return num1; }
수를 요소로 갖는 배열을 입력받아 각 요소들이 그 이전의 요소들의 합보다 큰지 여부를 리턴해야 합니다. 입출력예시 더보기 //입출력예시 let output =superIncreasing([1, 3, 6, 13, 54]); console.log(output); // --> true output = superIncreasing([1, 3, 5, 9]); console.log(output); // --> false 👻 인입들어오는게 당연히 문자열이라고 잘못생각했다..! (문제를 꼼꼼히 잘 보자!) += 했을때, 문자열처럼 옆에 붙는게아니라 진짜 덧셈연산이 된다!!!! function superIncreasing(arr){ let sum = arr[0]; for(let i=1; i= arr[i]) { //값비교..
문자열을 요소로 갖는 배열을 입력받아 문자열을 세로로 읽었을 때의 문자열을 리턴해야 합니다. 입출력예시 더보기 //입출력예시 let input = [ // 'hello', 'wolrd', ]; let output = readVertically(input); console.log(output); // --> 'hweolllrod' input = [ // 'hi', 'wolrd', ]; output = readVertically(input); console.log(output); // --> 'hwiolrd' 👻...??몇시간을 붙잡고있었는지모르겠닼ㅋㅋㅋㅋ 콘솔찍었는데도 모르겠다니.. 이런... 한참을 들여다보았고, 조금은 알것같은데 개운치않다 ㅜㅜ 굳이 철자 하나하나 쪼개놓지(split()) 않아도, 인덱..
2차원 배열(배열을 요소로 갖는 배열)을 입력받아 'B'의 위치 정보를 요소로 갖는 배열을 리턴해야 합니다. 입출력예시 더보기 //입출력예시 let output = findBugInApples([['A'], ['B']]); console.log(output); //[1, 0] output = findBugInApples([ ['A', 'A', 'A', 'A', 'A'], ['A', 'B', 'A', 'A', 'A'], ['A', 'A', 'A', 'A', 'A'], ['A', 'A', 'A', 'A', 'A'], ['A', 'A', 'A', 'A', 'A'], ]); console.log(output); //[1, 1] 👻 function findBugInApples(arr) { for (let i = ..
문자열을 요소로 갖는 배열을 입력받아 가장 짧은 문자열과 가장 긴 문자열을 제거한 배열을 리턴해야 합니다. 입출력예시 더보기 가장 짧은 문자열의 길이와 가장 긴 문자열의 길이가 같은 경우는 없습니다. 가장 짧은 문자열 또는 가장 긴 문자열이 다수일 경우, 나중에 위치한 문자열을 제거합니다 //입출력예시 let output = removeExtremes(['a', 'b', 'c', 'def']); console.log(output); // --> ['a', 'b'] output = removeExtremes(['where', 'is', 'the', 'longest', 'word']); console.log(output); // --> ['where', 'the', 'word',] 👻하 function re..
문자열을 입력받아 연속된 한자리 홀수 숫자 사이에 '-'를 추가한 문자열을 리턴해야 합니다. 입출력예시 더보기 //입출력예시 let output = insertDash('454793'); console.log(output); // --> 4547-9-3 👻엌.. 홀수(1 && 1) true여야 합니다~~ 짝수(0 && 0)false면 패스. function insertDash(str) { let result = str[0]; for (let i = 1; i < str.length; i++) { if (Number(str[i - 1]) % 2 && Number(str[i]) % 2) {// 짝수(0 && 0)false로 패스. 홀수(1 && 1)true로 result += '-'; // (홀수면)resul..
문자열을 입력받아 문자열 내에 아래 중 하나가 존재하는지 여부를 리턴해야 합니다. 'a'로 시작해서 'b'로 끝나는 길이 5의 문자열 'b'로 시작해서 'a'로 끝나는 길이 5의 문자열 입출력예시 더보기 //입출력예시 let output = ABCheck('lane Borrowed'); console.log(output); // --> true 👻어..어렵다.... i=4부터 시작한다! 그래서 i=0인것과의 길이가 5가 되는것. function ABCheck(str) { if (str === undefined) { return false; } str = str.toLowerCase(); for (let i = 4; i < str.length; i++) { if ( (str[i - 4] === 'a' &&..