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

yihyun·2025년 7월 1일

코딩테스트

목록 보기
91/105
post-thumbnail

길이에 따른 연산

✅ 문제설명

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

✅ 제한사항

2 ≤ num_list의 길이 ≤ 20
1 ≤ num_list의 원소 ≤ 9
num_list의 원소를 모두 곱했을 때 2,147,483,647를 넘는 입력은 주어지지 않습니다.

🔽 소스코드 1

실행 시간 : 0.01ms ~ 0.03ms

  • 배열의 길이에 따라 덧셈, 곱셈을 해야하기 때문에
  • 곱셈일 경우 기본 숫자가 0이 아닌 1로 구성되어야 한다.
  • 이를 해결하기 위해 삼항연산자를 사용해 길이에 따라 초기 숫자를 지정해준 후
  • 반복문 속에 조건문을 작성하여 += 또는 *= 을 진행해준다.
	public int solution1(int[] num_list) {
		
		int num = num_list.length < 11 ? 1 : 0;
		
		for(int i = 0; i < num_list.length; i++) {
			if(num_list.length >= 11) {
				num += num_list[i];
			}else {
				num *= num_list[i];
			}
		}
		
		return num;
	}

🔽 소스코드 2

실행 시간 : 0.01ms ~ 0.04ms

  • 기본 num = 1 로 설정해준 후
  • 조건문 안에 반복문을 작성해 + 또는 * 을 처리해준다.
  • 이때 덧셈일 경우 num 의 초기값이 0이어야 하므로,
  • 최종 결과에서 -1 을 해준 후 return 한다.
	public int solution2(int[] num_list) {
		
		int num = 1;
		
		if(num_list.length >= 11) {
			for(int i = 0; i < num_list.length; i++) {
				num += num_list[i];
			}
			num = num - 1;
		}else {
			for(int i = 0; i < num_list.length; i++) {
				num = num * num_list[i];
			}
		}
		
		return num;
	}
profile
개발자가 되어보자

0개의 댓글