• TIL: 항해99 15기 시작

    2023. 5. 29.

    by. Soozinyy

    ✔️ 학습 범위

    • 웹개발 종합반 복습
    • 유튜브 to-do 리스트 만들기 강의 3개 (가볍게 시청만)
    • JavaScript 문법 종합반 1주차 (+ 프로그래머스 2문제)

     

     

    📄 오늘 공부한 내용

    문제1 | 프로그래머스 > 연습문제 > 문자열 내 p와 y의 개수

    https://school.programmers.co.kr/learn/courses/30/lessons/12916

     

    대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교 해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나 도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별 하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.

     

    제한사항

    • 문자열 s의 길이 : 50 이하의 자연수
    • 문자열 s는 알파벳으로만 이루어져 있습니다.

     

    나의 풀이

    function solution(s){
        var answer = true;
        let sum_p = 0;
        let sum_y = 0;
        let alphabet = s.split("");
    
        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        // console.log(alphabet)
        alphabet.forEach((a) => {
            if(a == 'p' || a == 'P') {
                sum_p+=1;
            } else if(a== 'y' || a == 'Y') {
                sum_y+=1;
            }
        })
    
        if(sum_p == sum_y) {
            answer = true;
        } else {
            answer = false;
        }
        // console.log(sum_p, sum_y)
    
    
        return answer;
    }

    [웹개발 종합반] 강의에서 배웠던 forEach가 [JS문법 종합반] 강의에서도 나와서 반가운 마음에 꼭 사용해보고 싶었다.

     

     

    문제2 | 프로그래머스 > 월간 코드 챌린지 시즌2 > 음양 더하기

    https://school.programmers.co.kr/learn/courses/30/lessons/76501

    어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

     

    제한사항

    • absolutes의 길이는 1 이상 1,000 이하입니다. - absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
    • signs의 길이는 absolutes의 길이와 같습니다. - signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음 수임을 의미합니다.

     

    나의 풀이

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

    길이를 줄일 수 있을 것 같아서 다시 작성해 보았다.

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

     

    다른 사람의 풀이

    function solution(absolutes, signs) {
    
        return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
    }

    현재 값에 1 또는 -1을 더해주는 것이 인상적이다. (나중에 사용해 봐야지.. 메모 메모 !)

    reduce()메서드를 사용했는데, 내가 잘 모르는 것이라 추가적으로 공부했다.

    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

     

    Array.prototype.reduce() - JavaScript | MDN

    reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서 (reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.

    developer.mozilla.org

     

     

    ☁️ 노트

    5월 21일 일요일, 항해99에 합류하게 되었다. 자소서 작성 > 지원 > 인터뷰 > 합격 > 결제까지 모든 등록 과정이 하루 안에 이루어졌다. 이튿날인 월요일에 별다른 연락이 없어서 '부트캠프는 스스로 학습하는 곳이니까 할 일을 스스로 찾아야겠다 !'라며, 반짝이는 눈으로 스파르타코딩클럽에 접속해보니, 역시나 ! [웹개발 종합반] 강의가 있길래 며칠 동안 완강하였다. 그리고 26일에 연락이 왔는데... 나도 모르는 사이에 이미 사전 교육이 이루어지고 있다는 것이다 ㅇㅅㅇ; 카톡 안내를 했다는데 나는 받은 게 없었다. 생각해보니 예전에 과도한 광고 때문에 차단했던 것. 하지만 그동안 강의를 열심히 들었으니 아무것도 안 한 것보단 났다는 생각이 들었다. (전화해볼걸...ㅎㅎ)

     

    [웹개발 종합반] 강의 내용이 곧 입학시험이라는 공지가 있어서 부랴부랴 복습을 했다. 따라서 할 땐 쉬운데, 혼자하면 꼭 코드를 하나씩 빠뜨리곤 한다. 오늘 복습하면서는 함수의 매개변수를 빠뜨리고는 실행이 되지 않자, 다른 곳에 문제가 있나 한참을 고민했다.

    새롭게 시작한 [JS문법 종합반] 강의는 1주차 마지막에 문제를 내주었다. 프로그래머스에서 제출 후 다른 분들의 코드를 보니, 초라한 내 코드..ㅎㅅㅎ 열심히 배우겠습니다 !

    댓글