- 문제 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++) {
signs[i] ? answer += absolutes[i] : answer -= absolutes[i]
}
return answer;
}
제한사항을 보면 sign[i]가 참이면 양수, 그렇지 않으면 음수임을 의미한다라고 적혀있다.
그러면 absolutes의 모든 값을 for문을 사용해서 반복하게 하고
삼항연산자를 사용해서 참이면 +=, 거짓이면 -= answer에 더하고 빼게끔 했다.
다른사람의 풀이.
function solution(absolutes, signs) {
return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}
reduce를 사용해서 val값에 참이면 1을 곱하고 거짓이면 -1을 곱해서 양수와 음수를 구분했다.
- 문제 2. 핸드폰 번호 가리기
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
- phone_number는 길이 4 이상, 20이하인 문자열입니다.
function solution(phone_number) {
let num = Array.from(phone_number);
var answer = '';
for(let i = 0 ; i < num.length-4; i++){
answer += '*'
}
let spl = num.splice(num.length-4, 4 )
for(let i = 0 ; i < spl.length ; i++){
answer += spl[i];
}
return answer;
}
우선 전화번호의 뒷 4자리를 제외한 나머지 숫자는 *처리가 되야 하기 때문에 for문을 사용해서 *값을 answer에 더하게 했다.
그리고 splice를 사용해서 배열의 나머지 뒷자리 숫자들로만 이루어진 배열을 또 만들었고
다시 for문을 사용해 그 숫자들을 answer에 더하는 식으로 했습니다.
다른사람의 풀이
function hide_numbers(s){
var result = "*".repeat(s.length - 4) + s.slice(-4);
return result;
}
repeat을 이용해 뒷자리 4개를 제외한 나머지숫자를 *로 바꿨고, slice로 나머지 뒷자리 4개도 붙이는
아주쉽게 푸는 방법이 있었다.
- 문제 3. 없는 숫자 더하기
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
- 1 ≤ numbers의 길이 ≤ 9
- 0 ≤ numbers의 모든 원소 ≤ 9
- numbers의 모든 원소는 서로 다릅니다.
function solution(numbers) {
let answer = 0;
for(let i = 0; i <= 9; i++) {
if(!numbers.includes(i)) answer += i;
}
return answer;
}
for문을 사용해 0~9까지의 숫자를 반복하게 하고
논리부정연산자(!)를 사용해서 numbers의 값이 아닌 값을 includes(i)를 통해 찾고 그 값을 answer에 더 했습니다.
다른사람의 풀이
function solution(numbers) {
return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}
역시 reduce를 이용해서 numbers의 합을 45에 뺴주는 식으로 풀었다.
'코딩테스트' 카테고리의 다른 글
| (javascript)수박수박수박수?, 내적, 약수의 개수와 덧셈 (0) | 2024.01.18 |
|---|---|
| (javascript)제일 작은 수 제거하기, 가운데 글자 가져오기 (0) | 2024.01.17 |
| (javascript)콜라츠 추측, 서울에서 김서방 찾기, 나누어 떨어지는 숫자 (1) | 2024.01.15 |
| (javascript)정수 내림차순으로 배치하기, 하샤드 수, 두 정수 사이의 합 (1) | 2024.01.12 |
| (Javascript) 자연수 뒤집어 배열로 만들기, 문자열을 정수로 바꾸기, 정수 제곱근 판별 (0) | 2024.01.11 |