본문 바로가기
프로그래머스 코딩 테스트

프로그래머스 : JavaScript 알고리즘 Level.1 5일

by dongjin6539 2023. 7. 9.
728x90
반응형

프로그래머스 : JavaScript 알고리즘 Level.1 5일

 

프로그래머스 : JavaScript 알고리즘 Level.5

 

 

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

function solution(absolutes, signs) {
    var answer = 123456789;
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
absolutes signs result
[4, 7, 12] [true, false, true] 9
[1, 2, 3] [false, false, false] 0

 

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

 

해설 확인하기

코드는 두 개의 배열 absolutes와 signs를 인자로 받아서, absolutes 배열의 각 요소에 대응하는 signs 배열의 요소가 true이면 해당 absolutes 요소를 더하고, false이면 해당 absolutes 요소를 뺀 뒤 그 결과를 반환하는 JavaScript 함수입니다. 함수명은 solution이며, absolutes는 숫자들을 원소로 가지는 배열이고, signs는 true 또는 false 값을 원소로 가지는 배열입니다.

함수 내부의 동작을 설명하겠습니다:

먼저, answer 변수를 0으로 초기화합니다. 이 변수는 최종 결과값을 저장할 용도로 사용됩니다

. for 루프를 사용하여 absolutes 배열을 순회합니다. 각 요소에 대응하는 signs 배열의 요소를 확인하여 더할지 뺄지를 결정합니다.

만약 signs[i]가 true인 경우, 즉 해당 요소가 true인 경우에는 answer에 absolutes[i]를 더합니다.

만약 signs[i]가 false인 경우, 즉 해당 요소가 false인 경우에는 answer에서 absolutes[i]를 뺍니다.

모든 요소를 처리한 후 answer의 최종 값이 반환됩니다.

이 함수는 absolutes 배열의 각 요소에 대응하는 signs 배열의 요소를 확인하여 해당 숫자를 더하거나 뺀 뒤, 그 결과를 반환하는 기능을 수행합니다. 따라서 absolutes 배열의 숫자들은 절대값으로 취급되며, signs 배열의 true와 false에 따라서 해당 숫자가 더해지거나 빼지는 것을 알 수 있습니다.

 

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

function solution(phone_number) {
    var answer = '';
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"

 

답 확인하기
function solution(phone_number) {
    
    const newArr = new Array(phone_number.length-4).fill('*')
    let newNum = phone_number.slice(-4);
    newArr.push(newNum)
    
    return newArr.join('');
}

 

해설 확인하기

코드는 주어진 phone_number 문자열의 뒷 네 자리를 제외한 나머지 숫자들을 *로 대체하여 반환하는 JavaScript 함수입니다. 함수명은 solution이며, phone_number는 숫자와 하이픈(-)으로 구성된 전화번호 문자열입니다.

함수 내부의 동작을 설명하겠습니다:

먼저, phone_number 문자열에서 뒷 네 자리를 제외한 숫자들을 *로 채운 새로운 배열 newArr을 생성합니다. 이 때, 새로운 배열의 길이는 phone_number.length-4가 됩니다.

newArr에 *로 채워진 숫자들을 추가한 뒤, phone_number 문자열의 뒷 네 자리를 newNum 변수에 저장합니다. 이렇게 하면 newArr 배열에는 *로 채워진 숫자들과 phone_number의 뒷 네 자리 숫자가 저장됩니다.

newArr 배열을 join('') 메소드를 사용하여 문자열로 변환하고, 변환된 문자열을 반환합니다.

결과적으로, 함수는 phone_number 문자열에서 뒷 네 자리를 제외한 나머지 숫자들을 *로 대체한 문자열을 반환합니다. 이를 통해 전화번호의 일부 정보를 가려서 보안과 개인정보 보호를 강화할 수 있습니다.

 

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

function solution(numbers) {
    var answer = -1;
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
numbers result
[1, 2, 3, 4, 6, 7, 8, 0] 14
[5, 8, 4, 0, 6, 7, 9] 6

 

답 확인하기
function solution(numbers) {
    var answer = 0;
    for(let i=0; i<10; i++){
        if(!numbers.includes(i)) answer += i; // numbers가 i를 포함하지 않는다면, answer에 그 i 값들을 더해라
    } 
    return answer;
}

 

해설 확인하기

코드는 주어진 numbers 배열에 0부터 9까지의 숫자 중에서 포함되지 않는 숫자들의 합을 구하는 JavaScript 함수입니다. 함수명은 solution이며, numbers는 숫자들을 원소로 가지는 배열입니다.

함수 내부의 동작을 설명하겠습니다:

먼저, 결과값을 저장할 변수 answer를 0으로 초기화합니다.

for 루프를 사용하여 0부터 9까지의 숫자를 순회합니다.

if (!numbers.includes(i)) 문은 numbers 배열에 i라는 숫자가 포함되지 않은 경우를 확인합니다.

포함되지 않는 경우에는 해당 i 값을 answer에 더합니다. 이렇게 하면 numbers 배열에 없는 모든 숫자들의 합이 answer에 누적되어 저장됩니다.

모든 숫자를 순회한 후, answer의 최종 값을 반환합니다.

이 함수는 numbers 배열에 포함되지 않는 0부터 9까지의 숫자들의 합을 구합니다. 예를 들어, numbers 배열이 [1, 3, 5, 7]인 경우, 0, 2, 4, 6, 8, 9 숫자들이 포함되지 않으므로 해당 숫자들의 합인 29를 반환합니다.

 

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

function solution(arr) {
    var answer = [];
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
arr return
[4, 3, 2, 1] [4, 3, 2]
[10] [-1]

 

답 확인하기
function solution(arr) {

	let answer = [];
	if (arr.length <= 1){
		return [-1]
	} else {
		let minNum = Math.min(arr)
		let idx = arr.indexOf(minNum)
		arr.splice(idx,1)
        return answer = arr
	}
    
    return answer
}

 

해설 확인하기

코드는 배열 arr에서 최솟값을 제거한 결과를 반환하는 JavaScript 함수입니다. 함수명은 solution이며, arr은 숫자들을 원소로 가지는 배열입니다.

함수 내부의 동작을 설명하겠습니다:

먼저, 배열 arr에서 최솟값을 찾기 위해 Math.min(...arr)을 사용합니다. ...arr은 배열 arr의 요소들을 펼쳐서 인자로 전달하게 됩니다. 따라서 Math.min(...arr)은 배열 arr의 최솟값을 반환합니다.

indexOf 메소드를 사용하여 최솟값의 인덱스를 찾습니다. arr.indexOf(Math.min(...arr))은 최솟값의 인덱스를 반환합니다.

splice 메소드를 사용하여 최솟값의 인덱스를 기준으로 배열 arr에서 해당 요소를 제거합니다. arr.splice(arr.indexOf(Math.min(...arr)), 1)은 최솟값이 있는 인덱스에서 1개의 요소를 제거합니다.

배열 arr의 길이가 1 이하일 경우, 즉 최솟값을 제거한 후 배열의 길이가 1 이하인 경우에는 -1을 담은 배열 [ -1 ]을 answer로 할당합니다.

그렇지 않은 경우에는 arr을 answer로 할당합니다.

최종적으로 answer를 반환합니다.

이 함수는 배열 arr에서 최솟값을 제거한 결과를 반환합니다. 만약 배열의 길이가 1 이하이면, 배열에 아무 원소도 남지 않으므로 -1을 담은 배열 [ -1 ]을 반환합니다. 이는 최솟값을 제거하더라도 배열이 비어있지 않음을 보장하는데 사용됩니다. 그 외의 경우에는 최솟값을 제거한 결과가 반환됩니다.

728x90
반응형