728x90
[문제 설명]
정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.
[입출력 예]
num_list | result |
[3, 4, 5, 2, 1] | 1 |
[5, 7, 8, 3] | 0 |
[차근 차근 생각해보기]
- num_list를 돌면서 num_list의 원소를 곱해주고 더해준다.
- sum은 제곱이 되어야 하기 때문에 제곱으로 만들어준 후
- multiple이 sum보다 작다면 1을 return하고 크다면 0을 리턴한다.
[코드]
<수정 전>
class Solution {
public int solution(int[] num_list) {
int answer = 0;
int multiple = 1;
int sum = 0;
for(int i : num_list){
multiple *= i;
sum += i;
}
sum = (int)Math.pow(sum, 2);
if(multiple < sum){
answer = 1;
}else{
answer = 0;
}
return answer;
}
}
<수정 후>
class Solution {
public int solution(int[] num_list) {
int multiple = 1;
int sum = 0;
for(int i : num_list){
multiple *= i;
sum += i;
}
sum = (int)Math.pow(sum, 2);
return multiple < sum ? 1 : 0;
}
}
[반성할 점]
이 문제는 이틀 동안 풀지 못했다..계속 오류가 나서 Intellij에서 디버그를 돌려보았고
multiple이 0이 되었다. 그럴 수 밖에 없었다.. 처음에 multiple을 선언할때 int multiple = 0;으로하였기 때문에
아무리 곱해도 0이 나올수 밖에 없었다. 그래서 multiple을 1로 초기화 한 뒤 실행해보니 잘 작동하였다.
하지만 불필요한 코드가 너무 많은 것 같아 어떻게 줄여볼까 생각하던 중 삼항 연산자가 생각 났다.
삼항연산자는 (조건문) ? 참 : 거짓으로 조건문이 참일 경우 참의 값이 나오고 거짓일 경우 거짓의 값이 나오는 것이다.
그래서 multiple이 sum보다 작으면 참이기 때문에 1을 return하고 거짓일 경우 0을 return 하도록 하였다.
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 글자 이어 붙여 문자열 만들기 (0) | 2023.06.19 |
---|---|
[프로그래머스] - 카운트 업 (0) | 2023.06.14 |
[프로그래머스] - rny_string (0) | 2023.06.12 |
[프로그래머스] - n개 간격의 원소들 (1) | 2023.06.11 |
[프로그래머스] - 문자열의 뒤의 n글자 (2) | 2023.06.11 |