문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요. |
제한 사항
|
입출력 예
<aside> 📌 우리가 작성할 solution 함수의 실제 input과 올바른 output의 명세 입니다.
absolutes | signs | result |
4,7,12 | true,false,true | 9 |
1,2,3 | false,false,true | 0 |
이번 문제 역시 해답 코드 풀이 영상을 보면서 진행 하였다.
function solution(absolutes, signs) {
var answer = 0;
for (var i = 0; i < absolutes.length; i++) {
if (signs[i] === true) {
answer = answer + absolutes[i]
}
else if (signs[i] === false) {
answer = answer - absolutes[i]
}
}
return answer;
}
answer를 0으로 지정해주었다.
* 처음에 영상에서 아무 설명없이 바로 0으로 지정해주길래 왜지.. 왜지.. 생각했는데 0으로 지정해준 이유는
answer에다가 absolutes값들을 더하고 빼주기 위해 0으로 지정해준 것이다.
for 반복문을 통해 i를 0번째로 지정하고 absolutes 의 길이만큼 반복시키며 할때마다 1추가
true 일경우 answer + absolutes[i] , false 일경우 answer - absolutes[i] 를 통해 음수 양수를 구별해준다!
알고리즘을 할때마다 스스로 한게 아니라 그런가 만족스럽지 못하다..
뭔가 더 짧게 수정이 가능할거같다는 느낌적인 느낌..
그래서 약간의 수정을 해봤는데 잘 돌아간다!
function solution(absolutes, signs) {
var answer = 0;
for (var i = 0; i < absolutes.length; i++) {
if (signs[i] === true) {
answer +=absolutes[i]
}
else {
answer -=absolutes[i]
}
}
return answer;
}
그냥 생략해줄수 있는 부분들만 생략해준거라 똑같은 코드라 봐도 될 듯 하다?
하지만 나는 처음 혼자 해볼려했을때 forEach를 사용해볼려 했다.. 뭔가 그럼 더 짧게 될 거 같기도 하고..???
그리고 answer 를 0으로 지정하지말고 그냥 시작하는 absolutes 의 값부터 시작하면 되지 않나 싶다.
다음시간에!
'Algorithm' 카테고리의 다른 글
나이 비교 (0) | 2023.05.31 |
---|---|
n번째 글자를 기준으로 오름차순 정렬! (0) | 2023.05.31 |
문자열에 특정 문자 개수 비교 (0) | 2023.05.30 |