728x90
문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한사항
- absolutes의 길이는 1 이상 1,000 이하입니다.
- absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
- signs의 길이는 absolutes의 길이와 같습니다.
- signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
입출력 예
입출력 예 #1
- signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
- 따라서 세 수의 합인 9를 return 해야 합니다.
입출력 예 #2
- signs가 [false,false,true] 이므로, 실제 수들의 값은 각각 -1, -2, 3입니다.
- 따라서 세 수의 합인 0을 return 해야 합니다.
풀이 1)
using System;
public class Solution {
public int solution(int[] absolutes, bool[] signs) {
int[] arr = new int[absolutes.Length];
int answer = 0;
for(int i =0; i < absolutes.Length; i++){
if(signs[i] == false)
{
arr[i] = absolutes[i]*(-1);
}
else
{
arr[i] = absolutes[i];
}
answer += arr[i];
}
return answer;
}
}
: 처음에는 for문을 돌며 signs에서 음양을 구분한 후 바로 absolutes에 음양을 반영하는 것을 생각하지 못했다.
따라서 새로운 배열 arr[ ]를 만들어서 그 안에 음양을 구분한 absolutes값을 넣어주고 arr[ ]의 합을 반환하는 방식으로 풀었다.
하지만 삼항연산자를 활용하여 풀 수도 있겠다는 생각이 들어 더 간단하게 다시 풀어보았다.
풀이 2)
using System;
public class Solution {
public int solution(int[] absolutes, bool[] signs) {
int answer = 0;
for(int i =0; i<absolutes.Length; i++)
{
answer += (signs[i] == true) ? absolutes[i] : -absolutes[i];
}
return answer;
}
}
: 위와 같이 for문을 돌리며 삼항연산자를 사용하여 signs[ ]가 true이면 absolutes[ ] 그대로를, 아니면 -absolutes[ ] 를 반환하고 반환 값을 answer에 더해준다.
for문을 빠져나오면 answer값을 반환한다!
'공부 > 코딩테스트' 카테고리의 다른 글
프로그래머스/C# - 콜라츠 추측 (0) | 2024.06.10 |
---|---|
프로그래머스/C# - 없는 숫자 더하기 (1) | 2024.06.07 |
프로그래머스/C# - 서울에서 김서방 찾기 (0) | 2024.06.04 |
프로그래머스/C# - 두 정수 사이의 합 (0) | 2024.06.04 |
프로그래머스/C# - 나머지가 1이 되는 수 찾기 (0) | 2024.06.03 |