본문으로 바로가기

📘문제 설명

 

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

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

 

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

알고리즘 문제 연습 카카오톡 친구해요! 프로그래머스 교육 카카오 채널을 만들었어요. 여기를 눌러, 친구 추가를 해주세요. 신규 교육 과정 소식은 물론 다양한 이벤트 소식을 가장 먼저 알려

school.programmers.co.kr

 


📌 제한조건

  • absolutes의 길이는 1 이상 1,000 이하입니다.
    • absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
  • signs의 길이는 absolutes의 길이와 같습니다.
    • signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.

💡 개념 설명

1단계: 총합계 준비하기

가장 먼저, 최종 합계를 기록할 저장 공간을 하나 만들고 0으로 설정합니다. 모든 계산은 이 0이라는 숫자에서 시작됩니다.


2단계: 숫자와 부호 확인하기

절댓값이 담긴 목록과 부호가 담긴 목록을 동시에 처음부터 끝까지 하나씩 훑어봅니다. 예를 들어, 첫 번째 절댓값과 첫 번째 부호를 한 쌍으로 보고, 그다음 두 번째 절댓값과 두 번째 부호를 한 쌍으로 보는 식으로 진행합니다.


3단계: 더할지 뺄지 결정하기

각 쌍을 확인할 때마다 부호에 따라 계산을 수행합니다.

  • 만약 부호가 '양수'(true)이면 해당하는 절댓값을 총합계에 더합니다.
  • 만약 부호가 '음수'(false)이면 해당하는 절댓값을 총합계에서 뺍니다.

이 과정을 목록의 마지막 숫자까지 반복합니다.


4단계: 최종 결과 내놓기

모든 숫자에 대한 덧셈과 뺄셈이 끝나면, 총합계에 최종 결과가 남게 됩니다.


📎 입출력 예시


📎 코드

import java.util.*;public class Solution {    public int solution(int n) {        int answer = 0;        while (n > 0) {            answer += n % 10;            n /= 10;        }        return answer;    }    public static void main(String[] args) {        Solution s = new Solution();        int result1 = s.solution(123); // 1 + 2 + 3 = 6        int result2 = s.solution(987); // 9 + 8 + 7 = 24        System.out.println("123 ➝ " + result1); // 6 출력        System.out.println("987 ➝ " + result2); // 24 출력    }}

 


📎 결과