-
항해99 알고리즘 1일차(2)알고리즘 풀이 2021. 11. 9. 09:28
5.문자열을 정수로
문제 설명
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한 조건
- s의 길이는 1 이상 5이하입니다.
- s의 맨앞에는 부호(+, -)가 올 수 있습니다.
- s는 부호와 숫자로만 이루어져있습니다.
- s는 "0"으로 시작하지 않습니다.
입출력 예
예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.function strToInt(str){
return str/1
}
string으로 감싸진 숫자를 정수와 연산을 하면 정수로 바뀐다 s/1 이면 문자열 숫자 '12'와 정수 1과 나누는 연산을 하게되면 12/1 로 인식하고 정수형 숫자 12 로 return
function strToInt(str){
return +str;
}
자바스크립트 특성상 정수에 string 숫자를 더하면 정수가 되고 string인 숫자에 정수를 더하면 string 이 된다.
따라서 +를 붙여 정수에 '12' 처럼 숫자 string 을 넣어주면 정수 12 로 바뀐다.
function solution(s) {
return Number(s);
}
Number()을 사용하여 string 값을 정수로 변환 후 return
6. 없는 숫자 더하기
문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ numbers의 길이 ≤ 9
- 0 ≤ numbers의 모든 수 ≤ 9
- numbers의 모든 수는 서로 다릅니다.
입출력 예
numbers result [1,2,3,4,6,7,8,0] 14 [5,8,4,0,6,7,9] 6
입출력 예 설명
입출력 예 #1
- 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
입출력 예 #2
- 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.
문제풀이
function solution(numbers) {
//0-9까지의 전체 합45에서 빠진 값을 모두 더해 빼주면 된다.
return 45 - numbers.reduce((cur, acc) => cur + acc, 0); //초기값은 0으로 설정.
}
7.음양 더하기
문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한사항
- absolutes의 길이는 1 이상 1,000 이하입니다.
- absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
- signs의 길이는 absolutes의 길이와 같습니다.
- signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
입출력 예
absolutes signs result [4,7,12] [true,false,true] 9 [1,2,3] [false,false,true] 0
입출력 예 설명
입출력 예 #1
- signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
- 따라서 세 수의 합인 9를 return 해야 합니다.
입출력 예 #2
- signs가 [false,false,true] 이므로, 실제 수들의 값은 각각 -1, -2, 3입니다.
- 따라서 세 수의 합인 0을 return 해야 합니다.
문제
function solution(absolutes, signs) {
var answer = 123456789;
return answer;
}
문제풀이
function solution(absolutes, signs) {
let answer = 0
for (let i = 0; i < absolutes.length; i++){ //반복문을 i만큼 돌려준다
if (signs[i] === true) { //signs가 트루이면
answer = answer + absolutes[i] //정수배열들을 더하고
}else{
answer = answer - absolutes[i] //아니면 정수배열들을 빼준다.
}
}
return answer;
}
다른풀이
function solution(absolutes, signs) {
return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}
8. 평균구하기
https://jann2codingdiary.tistory.com/9
'알고리즘 풀이' 카테고리의 다른 글
항해99 2주차 알고리즘 풀이4 (0) 2021.11.09 항해99 2주차 알고리즘 풀이3 (0) 2021.11.09 항해99 알고리즘 1일 차(1) (0) 2021.11.08 항해99 2주차 알고리즘 풀이2 (0) 2021.11.08 항해99 2주차 알고리즘 문제 풀이1 (0) 2021.11.08