코딩테스트연습/[프로그래머스] Java

[프로그래머스] Java 코딩테스트 연습 - 길이에 따른 연산

_꼬마돌 2023. 6. 21. 20:46
반응형

[프로그래머스] Java 코딩테스트 연습 - 길이에 따른 연산

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/181879

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

정수가 담긴 리스트 num_list 가 주어질 때, 리스트의 길이가 11이상이면 리스트에 있는 모든 원소의 합을, 10 이하이면 모든 원소의 곱을 return하도록 solution함수를 완성해주세요.

 

풀이

for 반복문 돌리고 num_list의 길이가 11 이상일 경우 sum에 num_list의 원소들을 자리수마다 더했고, 10 이하일 경우 product에 num_list의 원소들을 자리수마다 곱했다. 그 다음에 num_list의 길이가 11 이상이면 answer에 sum을 할당하고 10 이하면 product를 할당하도록 했다.  

 

소스코드

class Solution {
    public int solution(int[] num_list) {
        int sum = 0;
        int product = 1;
        int answer = 0;
        
        for (int i = 0; i < num_list.length; i++) {
            if (num_list.length >= 11) {
                sum += num_list[i];
            } else if (num_list.length <= 10) {
                product *= num_list[i];
            }
            if (num_list.length >= 11) {
                answer = sum;
            } else if (num_list.length <= 10) {
                answer = product;
            }
        }
        return answer;
    }
}

 

if문을 너무 남발한 것 같아서 좀 더 간략하게 만든 코드,,

class Solution {
    public int solution(int[] num_list) {
        int sum = 0;
        int product = 1;
        int answer = 0;
        
        for (int i = 0; i < num_list.length; i++) {
            if (num_list.length >= 11) {
                sum += num_list[i];
                answer = sum;
            } else if (num_list.length <= 10) {
                product *= num_list[i];
                answer = product;
            }
        }
        return answer;
    }
}

 

3항 연산자로 더더더 간략하게 만들어봤다.

class Solution {
    public int solution(int[] num_list) {
        int sum = 0;
        int product = 1;
        int answer = 0;
        
        for (int i = 0; i < num_list.length; i++) {
            answer = (num_list.length >= 11) ? (sum += num_list[i]) : (product *= num_list[i]);       
        }
        return answer;
    }
}​

반응형