블로그 메뉴

    Tonkatsu
    Developer Lee
    Tonkatsu
    전체 방문자
    오늘
    어제
    • 분류 전체보기 (52)
      • Frontend (7)
        • React (3)
        • JavaScript (3)
        • HTML\CSS (1)
        • etc (0)
      • Backend (0)
        • Python\Django (0)
        • etc (0)
      • CS (32)
        • Algorithm\Coding Test (19)
        • Computer Science (8)
        • devops (5)
        • etc (0)
      • Languages (5)
        • Javascript (5)
        • Python (0)
        • etc (0)
      • 비상다반 (3)
      • 학원 (4)

    인기 글

    태그

    • Git
    • leetcode
    • CSS
    • 리트코드
    • js
    • CS
    • 백준
    • 프론트엔드
    • 네트워크
    • fetch
    • HTML
    • DFS
    • merge
    • 자바스크립트
    • BFS
    • Push
    • 코딩테스트
    • 프로그래머스
    • javascript
    • 코테

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    Tonkatsu

    Developer Lee

    프로그래머스-음양 더하기
    CS/Algorithm\Coding Test

    프로그래머스-음양 더하기

    2021. 11. 22. 00:45

    https://programmers.co.kr/learn/courses/30/lessons/76501

     

    코딩테스트 연습 - 음양 더하기

    어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re

    programmers.co.kr

     

    문제 설명

    어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 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

     

    풀이

     

    for 문을 사용하여 인덱싱을 하면서 true가 나오면 그대로 누적하고 false가 나오면 -1 을 곱하여 누적하면 큰 문제 없이 해결할 수 있다.

     

    function solution1(absolutes, signs) {
      let answer = 0;
      for (let i in absolutes) {
        answer += absolutes[i] * (signs[i] ? 1 : -1);
      }
      return answer;
    }

    true, false를 구분할 때는 삼항연산자를 사용하였다.

     

    길이가 같은 두 배열을 계산하는 것이므로 reduce를 사용하여서도 문제를 풀 수 있다.

     

    function solution2(absolutes, signs) {
      let answer = absolutes.reduce(
        (acc, _, i) => (acc += absolutes[i] * (signs[i] ? 1 : -1)), 0);
      return answer;
    }

     

    reduce 계속 써보니 깔끔하면서 코드가 짧아져서 참 좋아보인다.

     

    저작자표시 (새창열림)

    'CS > Algorithm\Coding Test' 카테고리의 다른 글

    javascript로 백준 문제 풀기-input  (0) 2021.11.30
    프로그래머스-구명보트  (0) 2021.11.28
    프로그래머스-내적  (0) 2021.11.21
    프로그래머스-기능개발  (0) 2021.11.20
    Javascript-행렬의 값 더하기  (0) 2021.11.08
      'CS/Algorithm\Coding Test' 카테고리의 다른 글
      • javascript로 백준 문제 풀기-input
      • 프로그래머스-구명보트
      • 프로그래머스-내적
      • 프로그래머스-기능개발
      Tonkatsu
      Tonkatsu
      한 번 뿐인 인생 편하게 살고싶지만 그러려면 열심히 살아야 되니까 열심히 살려고 노력은 하지만 편하게 사는 사람

      티스토리툴바