티스토리 뷰

💡 문제

음양 더하기

 

🔍 분석 및 계획

 문제 이해

정수의 절대값과 부호의 값이 따로 주어지 두개의 배열이 있을때 부호를 넣어 완성시킨 정수들의 합을 구하기

  • 입력 값 : 절대값 배열, 부호 배열
    - 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. 두가지 판별 조건식을 하나의 정규식으로 합치고 싶었는데, 동일 문자를 걸러내는 조건을 구현할 수가 없었다 
    => 추후 공부 후 구현
  2. 변수명 개선
개선예정

 

 

 다른 사람 풀이

 

1.
동일한 수식이지만 삼항연산자 사용부분이 더 깔끔하게 작성되었다

function solution(absolutes, signs) {
    return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함