[D+92] 항해99 5일차(2) (5~8)

ga_ding·2022년 3월 11일
0

TIL

목록 보기
28/55

5. 문자열 정수로 바꾸기

function solution(s) {
    var answer = 0;
    return Number(s);
}

뭔가 문제가 이해가 안돼서 그냥 숫자로 변환하는 Number을 사용했는데 정답이었다 ㅇㅂㅇ

6. 없는 숫자 더하기

function solution(numbers) {
    var answer = 0;
    for (let i = 0; i < 10; i++){
        if (!numbers.includes(i)) {
            answer += i
        }
    }
    return answer;
}

맨처음엔 문제 자체가 이해 안됐는데 입출력 예시 설명이 있었다!!
이 때 내가 사용한 방법은 일단 반복문(조건 0부터 10까지)으로 i 들을 돌리고 그 중에서 i가 없는 수만 더해주는 식으로 해결했다.

다른 사람들은 reduce 함수를 사용해서 0부터 9까지의 합인 45에서 빼주는 식으로 작성했다. (여기서 45구하는건 또 가우스)

reduce 사용법
배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값);

function solution(numbers) {
    return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}

0-9까지의 합인 45에서 numbers배열의 누적 합을 빼주면 우리가 원하는 값이 나올 수 있다. (reduce 어려운걸)

7. 음양더하기

function solution(absolutes, signs) {
    var answer = 0;
    for (let i = 0; i < absolutes.length; i++ ){
        if (signs[i] === true) {
            answer += absolutes[i];
        } else {
            answer -= absolutes[i]
        }
    }
    
    return answer;
}

입출력의 예시들이 배열이기때문에 반복문을 써야겠다고 생각했다. 그리고 signs가 false가 나오면 음수가 나오기 때문에 - true가 나오면 그냥 더해줘서 저렇게 작성해봤는데.. 설명이 맞는지 모르겠다.

8. 평균구하기

function solution(arr) {
    var answer = 0;
    for (let i=0; i<arr.length; i++) {
        answer += arr[i]
    }
    return answer/arr.length;
}

answer += arr[i] 여기서 계속 arr[i]가 아닌 i라고만 작성해서 계속 오류가 났었다,,
arr배열의 i번째를 반복해서 더해주는 코드를 작성하고 arr.length를 합에 나눠주면 평균값이 나온다.

아까 알아봤던 reduce를 이용해서 풀어보고 싶은데 어떻게 하는거징..?

function solution(arr) {
    var answer = 0;
    return arr.reduce((a,b) => a+b) / arr.length;
}

뭔가 누적으로 더한다는건 이해했는데 이렇게 사용하는게 맞는지는 더 연구가 필요하다.

오늘 배운 점

ex) "abcdeabcde" or ["a","b","c","d","e","a","b","c","d","e"]
배열/문자열.indexOf("bc") -> 1 (bc는 1번째에서 찾을 수 있다.)
배열/문자열.lastIndexOf("bc") -> 6 (bc는 6번째에서 찾을 수 있다.)
문자열.split(",") -> 배열로 변환
문자열.subsstr(2,4) -> cdef (2번째부터 길이 4개 구하기)
문자열.substring(2,4) -> b,t (2번째와 4번째 문자열 구하기)
문자열.charAt(0) -> a (0번째 문자열) (없는 문자열은 " " 출력) ,문자열[0]과 차이점은 없는 문자열을 넣으면 undefined 출력
문자열1.concat(문자열2) -> "문자열1+문자열2"
Math.pow(2, 3) ->2의3승
Math.sqrt(16) -> 루트16
Math.random( ) -> 난수를 가져옴
배열.pop() -> 배열의 마지막 요소를 뺴서 보여줌 <-> push
배열.shift() -> 배열의 처음 요소를 빼서 보여줌 <-> unshift
배열.reverse() -> 배열 값 뒤집기
배열.sort() -> 배열 값 유니코드 순서대로 정렬
profile
大器晩成

0개의 댓글