길이에 따른 연산

nacSeo (낙서)·2024년 2월 20일
0

프로그래머스

목록 보기
88/169

문제 설명

정수가 담긴 리스트 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

느낀 점

처음에 효율적이고 간결한 코드를 위해 변수를 하나만 두고 문제를 해결하고 싶었는데 덧셈과 곱셈을 같이 사용하려다 보니 막혔었다. 결국 변수 두 개를 두고 해결했는데, 다른 사람 코드들을 보니 변수를 하나만 사용하더라도 해결방법이 존재했다 ㅠ 아직 컴퓨팅적 사고가 부족한 것 같다.

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글