문제 설명
정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요.
제한사항
2 ≤ num_list의 길이 ≤ 20 1 ≤ num_list의 원소 ≤ 9 num_list의 원소를 모두 곱했을 때 2,147,483,647를 넘는 입력은 주어지지 않습니다.
나의 코드
class Solution {
public int solution(int[] num_list) {
if(num_list.length>=11) {
int sum = 0;
for(int i=0; i<num_list.length; i++) {
sum += num_list[i];
}
return sum;
} else {
int product = 1;
for(int j=0; j<num_list.length; j++) {
product *= num_list[j];
}
return product;
}
}
}
다른 사람 코드
class Solution {
public int solution(int[] num_list) {
int answer = (num_list.length < 11 ? 1 : 0);
for(int i=0; i<num_list.length; i++){
if(num_list.length < 11) {
answer *= num_list[i];
}else{
answer += num_list[i];
}
}
return answer;
}
}
변수를 하나만 사용하면서 삼항연산자
를 통해 해결
class Solution {
public int solution(int[] num_list) {
int answer = 1;
for (int i=0; i<num_list.length; i++) {
if (num_list.length >= 11) {
answer += num_list[i];
} else {
answer *= num_list[i];
}
}
if (num_list.length >= 11) answer--;
return answer;
}
}
변수를 하나만 사용하면서 마지막 if문을 걸어주어 덧셈연산 때 -1
느낀 점
처음에 효율적이고 간결한 코드를 위해 변수를 하나만 두고 문제를 해결하고 싶었는데 덧셈과 곱셈을 같이 사용하려다 보니 막혔었다. 결국 변수 두 개를 두고 해결했는데, 다른 사람 코드들을 보니 변수를 하나만 사용하더라도 해결방법이 존재했다 ㅠ 아직 컴퓨팅적 사고가 부족한 것 같다.