programmers.co.kr/learn/courses/30/lessons/76501
[문제 설명]
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 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 |
[풀이]
두 가지 방법으로 풀이를 했다.
1. for문
- absolutes의 길이만큼 for문을 돌면서 해당 i에 해당하는 signs 값이 false이면 -1을 곱해서 더해준다. true면 그냥 더해준다.
2. 람다
- IntStream을 사용해서 range를 구해준 뒤 map을 사용해서 signs[i]가 false이면 -1을 곱한다. 마지막에는 sum을 이용해서 요소들을 합해주면 된다.
[코드]
/**
* level 1 / 월간 코드 챌린지 시즌2
* https://programmers.co.kr/learn/courses/30/lessons/76501
* 2021.05.03
*/
public int solution(int[] absolutes, boolean[] signs) {
//방법 1
int sum = 0;
for(int i = 0; i < absolutes.length; i++) {
sum += signs[i] ? absolutes[i] : absolutes[i] * -1;
}
return sum;
//방법 2
return IntStream.range(0, absolutes.length).map(i -> signs[i] ? absolutes[i] * 1 : absolutes[i] * -1).sum();
}
반응형
'코딩테스트 > 프로그래머스 level 1' 카테고리의 다른 글
[프로그래머스 level_1/2021 Dev-Matching: 웹 백엔드 개발자(상반기)] 로또의 최고 순위와 최저 순위 for JAVA (0) | 2021.04.28 |
---|---|
[프로그래머스 level_1/찾아라 프로그래밍 마에스] 폰켓몬 for JAVA (0) | 2021.03.09 |
[프로그래머스 level_1 /월간 코드 챌린지 시즌 1] 두 개 뽑아서 더하기 for JAVA (0) | 2020.09.21 |
[프로그래머스 level_1] 하샤드 수 for PYTHON (0) | 2020.06.12 |
[프로그래머스 level_1] 자릿수 더하기 for JAVA (0) | 2020.05.13 |