본문 바로가기

코딩일기

알고리즘 코트카타 - 26 ~ 30 (자바스크립트)

https://school.programmers.co.kr/learn/courses/30/lessons/76501?language=javascript

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

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

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

 

https://school.programmers.co.kr/learn/courses/30/lessons/12948?language=javascript

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2. 문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
phone_number는 길이 4 이상, 20이하인 문자열입니다.

function solution(phone_number) {
    let answer = '';
    answer = '*'.repeat(phone_number.length - 4) + phone_number.slice(-4)
    return answer;
}

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/86051?language=javascript

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

3. 문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

제한사항
1 ≤ numbers의 길이 ≤ 9
0 ≤ numbers의 모든 원소 ≤ 9
numbers의 모든 원소는 서로 다릅니다.

function solution(numbers) {
    let answer = 0;
    for (let number of numbers) {
        answer += number
        console.log(answer, number)
    }
    return 45 - answer;
}

 

https://school.programmers.co.kr/learn/courses/30/lessons/12935?language=javascript

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

4. 문제 설명
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

제한 조건
arr은 길이 1 이상인 배열입니다.
인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

function solution(arr) {
    let answer = [];
    if (arr.length == 1) {
        return [-1]
    }else {
        let min = Math.min(...arr)
        arr = arr.filter(num => num !== min)
        return arr
    }
}

 

https://school.programmers.co.kr/learn/courses/30/lessons/12903?language=javascript

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

5. 문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

재한사항
s는 길이가 1 이상, 100이하인 스트링입니다.

function solution(s) {
    let answer = '';
    if (s.length % 2 == 0) {
        answer = s.slice(Math.floor(s.length / 2)-1, Math.floor(s.length / 2)+1)
    }else {
        answer = s[Math.floor(s.length / 2)]
    }
    return answer;
}

 

새로 배운 것

 - 자바스크립트에서의 배열의 인덱스로 원소를 호출하는 방법은 파이썬과 동일하다.

 - slice(), 배열을 슬라이싱 할때 사용한다.

 - repeat() 문자열을 반복한다. 자바스크립트에서는 문자열에 *를 이용해서 반복을 할 수 없다.

 - for 반복문에서 배열의 원소들을 순회할때, for... in을 사용하면 배열의 인덱스를 순회하고 for ... of를 사용하면 배열의 값을 순회한다.

 - spread연산자(...), 배열을 개별원소로 분리해서 함수에 전달한다.

 - filter(),파이썬의 remove()처럼 동작한다. 사용방법은 더 복잡하긴하지만...