티스토리 뷰
💡 문제
🔍 분석 및 계획
✅ 문제 이해
정수의 절대값과 부호의 값이 따로 주어지 두개의 배열이 있을때 부호를 넣어 완성시킨 정수들의 합을 구하기
- 입력 값 : 절대값 배열, 부호 배열
- 1 <= 배열의 길이 <= 1000, 빈 배열 없음 - 출력 값 : 정수들의 합
위 문제는 배열의 길이가 최대 1000으로 제한되어 있어, 입력값에 따라 무한정 커지지 않아 시간의 복잡도가 O(1)로 수렴하는 문제이다.
값과 부호 배열이 짝을 이루어 정렬되어 있기때문에 별 어려움없이 인덱스 순서대로 두 배열을 동시에 읽으면 간단하다
반복문을 통해 동시에 순회해도 되고, 한가지 배열에 대해 배열함수를 사용한 후 인덱스로 내부에서 계산해도 될꺼같은데, 식을 최대한 가독성있게 작성해보고자 후자로 작성하고자 한다
✅ 의사코드 작성
// 한가지 배열을 순회하여 합산 값을 반환한 후 출력
// 부호가 true면 더하고, false면 빼준다
📝 코드 구현
의사코드 + 코드
function solution(absolutes, signs) {
// 한가지 배열을 순회하여 합산 값을 반환한 후 출력
return absolutes.reduce((sum, cur, idx )=> {
// 부호가 true면 더하고, false면 빼준다
sum += signs[idx] ? +cur : -cur;
return sum;
},0)
}
최종 코드
function solution(absolutes, signs) {
return absolutes.reduce((sum, cur, idx )=> {
sum += signs[idx] ? +cur : -cur;
return sum;
},0)
}
시간 복잡도 : O(1)
💭 되돌아 보기
✅ 개선점
- 두가지 판별 조건식을 하나의 정규식으로 합치고 싶었는데, 동일 문자를 걸러내는 조건을 구현할 수가 없었다
=> 추후 공부 후 구현 - 변수명 개선
개선예정
✅ 다른 사람 풀이
1.
동일한 수식이지만 삼항연산자 사용부분이 더 깔끔하게 작성되었다
function solution(absolutes, signs) {
return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}
'IT기초 > 프로그래머스 문제풀이' 카테고리의 다른 글
| [프로그래머스 LV.1] #27 내적 (JavaScript) (0) | 2023.05.26 |
|---|---|
| [프로그래머스 LV.1] #26 신규 아이디 추천 (JavaScript) (0) | 2023.05.25 |
| [프로그래머스 LV.1] #24 로또의 최고 순위와 최저 순위 (JavaScript) (0) | 2023.05.23 |
| [프로그래머스 LV.1] #23 약수의 개수와 덧셈 (JavaScript) (0) | 2023.05.22 |
| [프로그래머스 LV.1] #22 숫자 문자열과 영단어 (JavaScript) (0) | 2023.05.21 |
댓글
