Programming/Client 29

[Javascript] 입력한 숫자의 합 구하는 함수

문제 아래 조건을 만족하는 함수 sumInput()을 작성해 봅시다. prompt 창을 띄워 사용자에게 숫자를 입력해 달라고 요청한 후, 입력받은 값들을 배열에 저장합니다. 숫자가 아닌 값, 혹은 빈 문자열을 입력하거나 'Cancel' 버튼을 누르면 질문을 멈춥니다. 배열 요소의 합을 계산하고 리턴합니다. 주의: 숫자 0은 유효한 숫자이므로, 사용자가 0을 입력하더라도 질문이 멈추지 말아야 합니다. 나의 풀이 prompt 창으로 숫자를 입력받아, 값들을 배열에 저장 숫자가 아닌 값 / 빈 문자열 ('') / cancle 버튼 (null) 을 입력 시 질문이 멈춤 ('0' 입력시 멈추면 안됨) 배열 요소의 합을 계산하고 리턴 function sumInput() { let array = []; let val..

Programming/Client 2022.03.17

[Javascript] 문자열 줄이기 함수

문제 str의 길이를 확인하고, 최대 길이 maxlength를 초과하는 경우 str의 끝을 생략 부호 ("…")로 대체해주는 함수 truncate(str, maxlength)를 만들어봅시다. 새로 만든 문자열의 길이는 maxlength가 되어야 합니다. 함수의 반환 값은 원하는 길이로 줄여진 문자열이 되어야 합니다. 예시 truncate("What I'd like to tell on this topic is:", 20) = "What I'd like to te…" truncate("Hi everyone!", 20) = "Hi everyone!" 나의 풀이 function truncate(str, maxlength) { if (str.length > maxlength) { let result = str.s..

Programming/Client 2022.03.16

[Javascript] 특정 문자 걸러내는 함수 만들기

문제 str에 'viagra’나 'XXX’라는 문자열이 있으면 true를 반환해주는 함수 checkSpam(str)을 만들어보세요. 해당 문자열이 없으면 false를 반환하면 됩니다. 함수는 대·소문자 관계없이 해당 단어를 걸러주어야 합니다. checkSpam('buy ViAgRA now') == true checkSpam('free xxxxx') == true checkSpam("innocent rabbit") == false 나의 풀이 function checkSpam(str) { let upperStr = str.toUpperCase(); return ( upperStr.includes("viagra".toUpperCase()) || upperStr.includes("XXX".toUpperCase(..

Programming/Client 2022.03.16

[Javascript] 문자열의 첫글자만 대문자로 변경 후, 출력

문제 str의 첫 글자를 대문자로 바꿔 반환하는 함수, ucFirst(str)를 만들어보세요. 함수 실행 결과는 아래 예시를 충족해야 합니다. ucFirst("john") == "John"; 나의 풀이 function ucFirst(str) { let result = str[0].toUpperCase(); for (let i = 1; i < str.length; i++) { result += str[i]; } return result; } alert(ucFirst("john")); 정상적으로 출력된다! 해답 function ucFirst(str) { if (!str) return str; return str[0].toUpperCase() + str.slice(1); } alert( ucFirst("joh..

Programming/Client 2022.03.16

[Javascript] 유효한 숫자를 입력할 때까지 반복하는 함수

문제 사용자가 유효한 숫자형 값을 입력할 때까지 계속 입력받는 함수 readNumber 를 만들어보세요. 반환되는 값은 꼭 숫자형 값이어야 합니다. 사용자가 아무 입력도 하지 않거나 '취소’를 누르면 입력받기를 멈추고 null을 반환하세요. 나의 실수 while만을 이용해서 만드려다보니 매우 복잡해졌다 너무 창피한 코드라서 올리지도 못하겠네 ㅠㅠ 해답 function readNumber() { let num; do { num = prompt("Enter a number please?", 0); } while ( !isFinite(num) ); // (isNaN(num))이라고 해도 됨 if (num === null || num === '') return null; return +num; // 숫자형 값이..

Programming/Client 2022.03.15

[Javascript] 메서드 호출 체이닝 구조 만들기

문제 let ladder = { step: 0, up() { this.step++; }, down() { this.step--; }, showStep: function() { // 사다리에서 몇 번째 단에 올라와 있는지 보여줌 alert( this.step ); } }; 위 코드를 메소드 체이닝 가능하도록 수정하기 실행해야 하는 코드 ladder.up().up().down().showStep(); 해답 let ladder = { step: 0, up() { this.step++; return this; }, down() { this.step--; return this; }, showStep() { alert( this.step ); return this; } } 호출할 때마다 자신을 반환하는 구조를 만듬

Programming/Client 2022.03.08

[Javascript] 거듭제곱 함수 구현

문제 x와 n의 값을 받아서 x의 n 제곱 값을 반환하는 함수 만들기 (n의 값은 1 이상의 자연수일 것) 나의 풀이 function pow(x, n) { if (n < 1) { alert(`${n}은 양의 정수이어야 합니다.`); } else { for (let i = 1; i < n; i++) { x *= x; } return x; } } let x = prompt("x?", ""); let n = prompt("n?", ""); alert(pow(x, n)); 문제점 for문 안의 x를 따로 변수 선언하지 않아 혼동 가능성 있음 거듭제곱 함수 안에 n의 자연수 조건문 분리 필요 해답 function pow(x, n) { let result = x; for (let i = 1; i < n; i++) ..

Programming/Client 2022.03.02

[Javascript] ?나 ||를 사용하여 함수 작성

조건부 연산자 '?' condition ? value1 : value2; condition 만족 시 → value1 반환 / 불만족 → value2 반환 다중 사용 condition ? value2 : value 3; condition ? value1 : 조건에 따라 반환값을 달리하려는 목적으로 만들어짐 간단한 줄 아니고서는 if 사용이 나음 예시 let result; if (a + b < 4) { result = '미만'; } else { result = '이상'; } // let result = (a + b < 4) ? '미만' : '이상'; // 두 개의 코드는 같은 결과 or 연산자 '||' 하나라도 true = true 피연산자가 boolean 아닌 경우 (원래값 반환) 첫 번째 truthy 반..

Programming/Client 2022.03.02

[Javascript] 사용자가 유효한 값을 입력할 때까지 프롬프트 창 띄우기

문제 사용자가 100보다 큰 숫자를 입력하도록 안내하는 프롬프트 창을 띄워보세요. 사용자가 조건에 맞지 않은 값을 입력한 경우 반복문을 사용해 동일한 프롬프트 창을 띄워줍시다. 사용자가 100을 초과하는 숫자를 입력하거나 취소 버튼을 누른 경우, 혹은 아무것도 입력하지 않고 확인 버튼을 누른 경우엔 더는 프롬프트 창을 띄워주지 않아도 됩니다. 사용자가 오직 숫자만 입력한다고 가정하고 답안을 작성하도록 해봅시다. 숫자가 아닌 값이 입력되는 예외 상황은 처리하지 않아도 됩니다. 나의 풀이 let value = prompt("100 이상의 숫자를 입력해주세요.", ""); while (value < 100) { if (value == "" || value == null) break; alert("wrong n..

Programming/Client 2022.02.28