코테/프로그래머스

[프로그래머스/Lv. 0] 소인수분해

imname1am 2023. 2. 11. 21:42
반응형

내 코드 (틀림)

import java.util.*;

class Solution {
    public int[] solution(int n) {
        
        List<Integer> list = new ArrayList<>();
        int k = 2;
        
        while(n != 1) {
            if(n % k == 0) {
                list.add(k);
                n /= k;
            } else {
                k++;
            }
        }
        
        
        int[] answer = new int[list.size()];
        
        for(int i=0 ; i < list.size() ; i++) {
            answer[i] = list.get(i);
        }
        
       Arrays.sort(answer);
        
        return answer;
    }
}

11번째 줄 list.add(k); 를 어디 위치에 써야하는지 조금 갈팡질팡하긴 했다...

그래서 다른 코드들 보고 여차저차 작성하긴 했다만...

answer 배열에서 중복값 제거가 필요했다...

근데 뭔가 자꾸 코드가 길어지는 거 같고..

구글링해도 원하는 결과가 잘 안나오길래 결국 마지막 줄만 더 참고하기로 했다..ㅠ

import java.util.*;

class Solution {
    public int[] solution(int n) {
        
        int[] answer = {};
        List<Integer> list = new ArrayList<>();
        int k = 2;
        
        while(n != 1) {
            if(n % k == 0) {
                list.add(k);
                n /= k;
            } else {
                k++;
            }
        }
        
        answer = list.stream().distinct().mapToInt(Integer::intValue).toArray();
        return answer;
    }
}

19번째 줄...악.. 스트림 이용해야...

 

.stream() : 스트림 객체 생성

.distinct() : 스트림에서 중복값 제거

.mapToInt(Integer::intValue) : .maptoInt(i -> i)로 써도 된다. map은 기존의 데이터에서 특정 형태로 수정해 적용한다는 의미! 인데 IntStream으로 바꿔주는 메소드!

.toArray() : 리스트를 배열로 만듦

 

Stream API 함수를 더 공부해야겄다 (filter, map, limit, collect 등)


(참고)

스트림 사용법

 

[Java] 자바 스트림(Stream) 사용법 및 예제

자바 스트림(Stream) 자바의 스트림(Stream)은 'Java 8'부터 지원되기 시작한 기능이다. 컬렉션에 저장되어 있는 엘리먼트들을 하나씩 순회하면서 처리할 수 있는 코드패턴이다. 람다식과 함께 사용되

hbase.tistory.com

 

[Java] 스트림(Stream) 이란? 스트림과 컬렉션의 차이점 #내부반복 #외부반복

[Java8] 스트림 (Stream) 기존의 Java에서 컬렉션 데이터를 처리할때 특정 조건에 따라 필터링을 하려면 복잡한 과정을 거쳐야 했습니다. 반면에 SQL 문법의 경우 사용자가 원하는 조건의 데이터 목록

ksr930.tistory.com

✔ 스트림 중간 연산자 (.distinct() 등)

 

Java - Stream.distinct() 사용 방법 및 예제

Java8에서 도입된 Stream의 distinct()에 대해서 알아보겠습니다. distinct의 사전적 의미는 '구별할 수 있는'입니다. Stream에서 distinct() 메소드는 스트림에서 중복되는 요소들을 모두 제거해주고 새로운

codechacha.com

 

[Java8] 스트림(Stream) 중간 연산자

중간 연산자filter는 말 그대로 필터링, 증 조건에 맞는 것만 거른다는 것이다.위의 코드에서는 람다식을 이용해서 x로 스트림의 요소를 받고 각 요소에 "o"라는 알파벳이 있는 것들만 거른다. 즉,

velog.io

 

 

 

자바의 정석 - 스트림(Stream) | Integerous DevLog

자바의 정석 - 스트림(Stream) 2018/11/29 자바의 정석(남궁성 저) 2권 학습내용 정리 1. 스트림(Stream) 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았

ryan-han.com

(다들 깔끔하게 해주셨지만 개인적으로는 이게 정리가 가장 깔끔하신..👍👍)

 

.toArray()

 

[JAVA] List 의 toArray() 메서드

 List 컨테이너의 인스턴스를 배열(array)로 만드는것이 'toArray' 메서드이다. 하지만 이 메서드 사용에 있어서 아래와같은 아리송한 코드를 자주 봤을 것이다. List<String> stringList = new ArrayList<...

asuraiv.blogspot.com

반응형