본문 바로가기

TIL(Today I Learned)

TIL-231115([프로그래머스/자바] 콜라츠 수열 만들기)

📝오늘 공부한 것

  • 커리어톤 참여하기
  • 프로그래머스 문제풀기
  • 면접 준비
  • 면접 보고오기

📌 문제

 

📌 정답

import java.util.ArrayList;
import java.util.List;

class Solution {
    public int[] solution(int n) {
        List<Integer> listAnswer = new ArrayList<>();
        while (n!=1){
            listAnswer.add(n);
            if(n%2==0){
                n = n/2;
            } else {
                n = 3 * n +1;
            }
        }
        listAnswer.add(1);

        int[] answer = listAnswer.stream().mapToInt(Integer::intValue).toArray();
        return answer;
    }
}

 

⭐ for문과 while문 차이

for문은 구하고자 하는 값의 조건이 무엇인지 정확할 경우 사용한다.

while문은 구하고자 하는 값의 조건이 무엇인지 정확히 모를 경우, 유동적인 경우에 사용한다.

-> 이 문제에서는 배열의 길이가 정확하게 정해지지 않아서 for문 대신 while문을 사용하였다.

 

⭐ list를 int배열로 변환

for문을 사용하는 방법과 stream을 사용하는 방법 중 stream을 사용하는 방법을 선택하였다.

int[ ] answer = list.stream( ).mapToInt(Integer::intValue).toArray( );