JSEXP

4.18~4.19에 했던 자바스크립트 연습문제 입니다.
01_variable,function,type부터
02_conditional,string,loop의 25번 까지 입니다.
간략하게 리뷰, 본인의 느낀점및 고찰등이 적어뒀습니다.

1-1
키워드 let을 이용하여 변수 dec를 선언하세요

function declaration() {
let dec 
return dec;
}

1-2
선언되어 있는 변수 dec에 문자열 "hello world"를 할당하세요

function assignment() {
    let dec= "hello world"
   return dec
}

1-3
선언되어있는 변수 'num1'에 숫자 7을 할당하고, 변수 'num2'에 숫자 8을 할당한 뒤
변수 result에 num1과 num2를 더한 값을 할당하세요

function expression() {
    num1 = 7
    num2 = 8 
    let result = num1+ num2

1-4
첫번째 수 'num1'과 두번째 수 'num2'가 주어졌을 때,이 두 값을 곱한 값을 변수 result에 할당하여 리턴하는 함수 fnc를 작성하세요

function fnc(num1, num2) {
    let result = num1* num2 
    return result
}

1-5
입력 인자에 2를 곱하여 반환하는 'double'이라는 함수가 있을 때,
이 함수의 첫번째 인자로 숫자 7을 넣어 호출한 뒤, 결과값을 result에 할당하세요

function double(argument) {
return argument * 2  
}
function invoke() {
let result = double(7)  // 결과값 선언! 
return result;
}

1-6
숫자 9와 7을 더하면 어떠한 값이 되는 지 생각해 보고, addNumber내의 변수 'result'에 결과값을 담아 리턴하세요.

function addNumber() {
    let result= 9+7
    return result;
}

1-7
문자 7과 숫자 1을 더하면 어떠한 값이 되는지 생각해 보고, addString 내의 변수 'result'에 결과값을 담아 리턴하세요.

function addString() {
    let result= "7" +1 
    return result;
}

1-8
함수 typeSwitch는 str 이름의 임의의 매개변수를 입력받아, 숫자를 리턴하는 함수입니다
값을 리턴할 수 있도록 코드를 작성하세요.

function typeSwitch(str) { 
    const result = Number(str) 
    return result   
}

1-9
함수 typeSwitch2는 num 이름의 임의의 매개변수를 입력받아, 문자를 리턴하는 함수입니다 값을 문자로 변환하여 리턴할 수 있도록 코드를 작성하세요.

function typeSwitch2(num) {
    let result  
    result = String(num)
    return result 
}

1-10
2개의 문자열을 입력받아, 공백 1칸을 둔 단일 문자열을 반환해야 합니다.
예) '헌법', '제1조' => '헌법 제1조'

function string(str1, str2) {
 let result 
 result = str1+" "+str2
 return result 
}

2-1

2-2

2-3

2-4

2-5

2-6

2-7

2-8

연산 기호를 어떻게 처리해야할지 몰라서 엄청 애먹은 문제 결국 기호각각 조건을주었다.

2-9

이건 초창기때도했던 문제 년도자체도 같다.
&&가 아닌 ||을 길게 늘어준게 핵심이다.

2-10

이건 예전 시험문제로도 나왔던 문제며 프캠에서도 봤던 문제

2-11
점수를 입력받아 점수에 맞는 등급을 자세히 알려주는 함수를 완성하세요.
점수가 0점 미만이거나 100점을 초과할 경우 '잘못된 입력입니다'를 리턴해야 합니다.
등급 영역
- 0점 미만 또는 100 점 초과 : '잘못된 입력입니다'
- 90점 ~ 100점 : 'A'
- 80점 ~ 89점 : 'B'
- 70점 ~ 79점 : 'C'
- 60점 ~ 69점 : 'D'
- 0점 ~ 59점 : '등급 미달'
세부 등급
- 각 점수 등급 중 일의 자리 점수에 따라
세부 등급을 기존 등급 뒤에 붙여 표시해야 합니다.
- 7~9점대는 +
- 4~6점대는 0
- 0~3점대는 -
ex) 72점 => C-
89점 => B+
100점 => A+

function ratingDetail(num) {
    if (num  > 100 || num < 0) {
        return"잘못된 입력입니다";
        } else if (num  >= 90 && 93 >= num) {
            return"A-";
        } else if (num  >= 94 && 96 >= num) {
            return"A";
        } else if (num  >= 97 && 100 >= num) {
            return"A+";
        } else if (num  >= 80 && 83 >= num) {
            return"B-";
        } else if (num  >= 84 && 86 >= num) {
            return"B";
        } else if (num  >= 87 && 90 >= num) {
            return"B+";
        } else if (num  >= 70 && 73 >= num) {
            return"C-";
        } else if (num  >= 74 && 76 >= num) {
            return"C";
        } else if (num  >= 77 && 79 >= num) {
            return"C+";
        } else if (num  >= 60 && 63 >= num) {
            return"D-";
        } else if (num  >= 64 && 66 >= num) {
            return"D";
        } else if (num  >= 67 && 69 >= num) {
            return"D+";
        } else if (num  <= 59) {
            return"등급 미달";
        }
    }

ㄹㅇ 무식하게 일일이 점수를 나눠서 했다. 다른 방법으로도 해보고싶었으나 시간에 너무묶여있어서 다른방법으로만 풀수있는 레이팅 점수문제가 나오면 그때 하기로 하자 :)

2-12

2-13

2-14

체감상 14번부터 확 어려워진거같다.
lastIndexOf : 문자열 안에 원하는 키워드가 있다면 가장 마지막에 발견된 위치를 인덱스 번호로 알려주는 함수이다.
const result = xyz.lastIndexOf(Math.max(...xyz)) =
가장 긴 문자열이 두개 이상일 경우 가장 마지막에 찾은 문자열을 리턴해주기위해 만들었다.

2-15
아이디와 비밀번호를 입력받아 아래 조건을 모두 충족하면 true를, 그렇지 않으면 false를 리턴하는 함수를 완성하세요.
- 아이디는 4글자 이상
- 비밀번호는 8글자 이상, 느낌표(!)를 포함

```

function verify(id, password) {
if(id.length >= 4 && password.length >= 8 && password.includes("!")){
return true}
else{
return false}
}

2-16
임의의 문자열과 수(num)를 입력받아,
앞쪽부터 차례대로 num개의 글자만 리턴하는 함수를 완성하세요.
ex) cutIn('developer', 3) => 'dev'

str. 이 붙는 이유는? str객체 내장함수이기때문
slice(시작점,끝점)

2-17
임의의 문자열과 수(num)를 입력받아,
앞쪽부터 차례대로 num개의 글자를 제거하고 남은 글자만 리턴하는 함수를 완성하세요.
ex) cutOut('abcdefg', 4) => 'efg'

slice(시작,끝)인데 보기에서주어진조건으로
slice(끝점,?) 임을 알수있고
?는 문자열의 총길이가 들어가야하니 str.num이다.

2-18
대소문자가 섞인 임의의 문자열을 입력받아, 모두 소문자로 변환하여 리턴하는 함수를 완성하세요
ex) 'hElLO WOrLd' => 'hello world'

모든문자열->소문자 str.toLowerCase() 이다 대문자주의!

2-19
임의의 두 수를 입력받아, 첫번째로 입력받은 수가 두번째로 입력받은 수보다 크거나 작은지 판단하여 리턴하는 함수를 완성하세요
ex) onlySmall(6, 7) => '6은(는) 7보다 작습니다'
onlySmall(9, 1) => '9은(는) 1보다 큽니다'
onlySmall(5, 5) => '5은(는) 5와 같습니다'

띄어쓰기, 공백이 핵심! 문자열은 감싸준다.

2-20
임의의 수(num)를 입력받아, 0부터 해당 num까지의 합을 반환하는 함수를 완성하세요

for 문법 다음 중괄호에는 따로 선언을 해주고 그다음 중괄호밖에는 리턴값을 넣어줘야한다.

2-21
임의의 문자열을 입력받아, 문자열 사이에 숨어있는 달러($)를 찾아 인덱스를 반환하는 함수를 완성하세요.달러 기호가 없는 경우, '찾을 수 없음' 이라는 문자열을 반환해야 합니다.

for문을 사용하고 {}에는 조건문을 넣어준다.
그리고 return 을 꼭 넣어주자!

2-22
임의의 수를 입력받아, 짝수일 경우 true를 반환하고, 홀수일 경우 false를 반환하는 함수를 완성하세요.반복문을 사용해야 하며, 나눗셈(/) 및 나머지(%) 연산자는 사용할 수 없습니다.0은 짝수로 간주합니다 임의의 수 num은 음수로 입력될 수도 있습니다.입력받은 num에서 반복하여 2를 뺀 결과가 0이면 짝수, 1이면 홀수입니다.

boolean 값 조심 "" 써줄필요가없다.

2-23
임의의 수(num)를 입력받아, 0부터 해당 num까지의 인덱스를 적은 문자열을 반환하는 함수를 완성하세요
ex) idxString(3) => '0123'
idxString(0) => '0'
idxString(9) => '0123456789'
idxString(-2) => '0-1-2'

result를 "0"으로선언해준이유?
let i를 0으로 시작했을때,
idxString(-2) => '-0-1-2'이 되어버린다.

2-24
임의의 수(num)를 입력받아, 해당 수 까지의 팩토리얼을 한 결과값을 리턴하는 함수를 완성하세요

0은 팩토리얼에 상관이 1도없고 1부터시작하니 i와 result를 1로시작
result = result x i = 1x2, 1x2x3, 1x2x3x4, ...

2-25
임의의 수(num)를 입력받아, 1부터 num까지의 수 중에서, 5의 배수로만 구성된 문자열을 리턴하는 함수를 완성하세요

  • 5의 배수가 없을 경우 빈 문자열을 리턴합니다
    ex) penta(98) => '5101520253035404550556065707580859095'

    결과를 넣어줄 문자열 result=""
    1로 시작해야 5부터나오지,
    num값이 5의배수보다 작아야 문자열에 붙일 숫자들이 문자열에 붙일 숫자들이 num보다 안크다.
    result = result + 5*i 한이유는
    5, 5+5, 10 + 5, 15 + 5, ... 처럼 나오게 하기 위해서이다 .

ps) 생각보다 알고리즘 문제푸는게 시간이 오래걸리고 어렵다. 어려운만큼 해결했을때의 쾌감이 고구마먹다가 사이다먹은것 보다 짜릿하다. 주변 페어분이 남이 문제를 푸는 사고방식 이나 접근방법에 흥미가 든다는 것에 신기하기도하고 그냥 정형화된 풀이패턴만 날로 먹으려고 한 내자신을 돌아보게되었던 계기가 되었던거 같다. 그래서 그런지 좀 일찍 공부해볼걸 아쉬움이 든다. 그냥 버티기만해서는 불가하다는 것을 최근에 많이 느꼈다. 솔직히 내가 어떻게 됄지 모르겠지만 해볼만큼은 해보고 결과에 수긍 하려한다. 그리고 오류 를 적극적으로 해결해주신 멘토님 감사합니다.

좋은 웹페이지 즐겨찾기