본문 바로가기

Algorithm/Programers - Java

[프로그래머스(Java)] 홀수 vs 짝수 / iterate()

 

Level. 0

 

문제

정수 리스트 num_list가 주어집니다.
가장 첫 번째 원소를 1번 원소라고 할 때, 홀수 번째 원소들의 합과 짝수 번째 원소들의 합 중 큰 값을 return 하도록 solution 함수를 완성해주세요.
두 값이 같을 경우 그 값을 return합니다.

* 제한사항
- 5 ≤ num_list의 길이 ≤ 50
- -9 ≤ num_list의 원소 ≤ 9

 

풀이1

class Solution {
    public int solution(int[] num_list) {
        int num1=0, num2=0;
        for(int i=0; i<num_list.length; i++){
            if(i%2==0)num1 += num_list[i];
            else num2 += num_list[i];
        }
        return Math.max(num1, num2);
    }
}

 

풀이2. - stream

import java.util.stream.IntStream;

class Solution {
    public int solution(int[] num_list) {
        return Math.max( IntStream.iterate(0, i-> i<num_list.length, i -> i+2).map(i->num_list[i]).sum(), 
                         IntStream.iterate(1, i-> i<num_list.length, i -> i+2).map(i->num_list[i]).sum());
    }
}

 

 

Stream.iterate()

static <T>  Stream <T> iterate(T Seed, Predicate <? super T> hasNext, UnaryOperator <T> next)
  • 특정한 연산을 반복적으로 수행할 때 사용한다.
  • seed : 초기값
  • hasNext : 스트림이 종료되어야 하는 조건
  • next : 값을 변경시킬 람다 함수

https://strong-2-min.tistory.com/466

 

[프로그래머스(Java)] 콜라츠 수열 만들기 / Stream.iterate()

Level. 0 문제 모든 자연수 x에 대해서 현재 값이 x이면 x가 짝수일 때는 2로 나누고, x가 홀수일 때는 3 * x + 1로 바꾸는 계산을 계속해서 반복하면 언젠가는 반드시 x가 1이 되는지 묻는 문제를 콜라

strong-2-min.tistory.com


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

 

프로그래머스

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

programmers.co.kr