(JS) 알고리즘 - 음양 더하기
2023. 6. 13. 11:18문제)
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
문제요약)
매개변수 signs (true와 false를 가짐), absolutes (절대값 정수의 배열)이 주어졌을 때,
absolutes를 모두 더했을 때 나오는 값을 구하는 solution 함수를 만들어보자.
접근 방식)
(1) absolutes 배열의 수 만큼 for문을 돌려보자
(2) 양수로 만드는 방법 : Math.abs(변수) / 음수로 만드는 방법 : 변수*-1 을 사용해보자
(3) signs[i]가 true라면 양수, false라면 음수로 반환하는 if문으로 만들어서, answer이라는 변수에 더한다.
접근 오류)
계속 값에 오류가 떠서 확인해보니까 for문이 끝나는 시점을 잘못 설정해두고 있었다. length는 글자수가 아니라 문자열의 수를 구하는 메소드니까 absolutes=[4,7,12] 일 경우 absolutes.length는 3이다. 그런데 배열은 0번째부터 시작하니까 absolutes[3]은 3번째 문자열이 아니라 4번째 문자열이 된다. 그러므로 <= absolutes.length가 아니라 < absolutes.length 만큼 for문이 돌아가도록 설정했어야 했던 것.
이런 사소한 걸로 완전히 틀리다니 ㅠ length 사용법에 대해서 더 많이 공부해야겠다.
for (let i=0 ; i <= absolutes.length; i++)
다른 사람의 풀이)
기본적으로는 같은 접근방식인데, if문 대신에 삼항식을 사용해서 좀 더 간결하고 좋은 코드가 되었다.
그리고 절대값은 결국 양수이므로, 양수로 만드는 Math.abs()를 생략하고 음수로 만드는 *-1만 한 것도 인상깊었다.
삼항식은 answer = signs[i] + (참일경우 양수인 absolutes[i]를) : (거짓일경우 음수인 absolutes[i] *-1) 을 더해준다는 뜻이다.
'JavaScript > 알고리즘' 카테고리의 다른 글
(JS) 알고리즘 - 짝수와 홀수 / 두 정수 사이의 합 (0) | 2023.06.19 |
---|---|
(JS) 알고리즘 - 직사각형 별찍기 (0) | 2023.06.19 |
(JS) 알고리즘 - 가운데 글자 가져오기 (0) | 2023.06.17 |
(JS) 알고리즘 - 문자열 내 마음대로 정렬하기 (0) | 2023.06.14 |
(JS) 알고리즘 - 문자열 내 p와 y의 개수 (0) | 2023.06.13 |