우당탕탕 개발_𝒍𝒐𝒈

<프로그래머스>Lv_0 중복된 숫자의 값 본문

𝐬𝐭𝐮𝐝𝐲/𝐚𝐥𝐠𝐨𝐫𝐢𝐭𝐡𝐦

<프로그래머스>Lv_0 중복된 숫자의 값

hojeong01 2024. 5. 28. 18:04

<문제>

정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때,

array에 n이 몇개 있는 지를  return하도록 solution함수를 완성해보세요.

 

제한사항

1 <= array의 길이 <= 100

0 <= array의 원소 <= 1,000

0<= n <= 1,000

 

<나의 풀이>

지난번 알게된 stream의 filter 기능을 적용해 볼 수 있겠다는 생각이 들어 적용하여 풀이해 보았다

  • 배열을 스트림으로 변환한다. (int -> IntStram)
  • array 에 속한 요소 중 n과 일치(==)하는 요소 필터링하여  조건에 만족하는 요소를 남긴다.
  • .count()를 통해 남아있는 요소의 개수를 세어 long 타입으로 반환한다. 
    public static int solution2(int[] array, int n){

        long stream = Arrays.stream(array) //배열 -> 스트림 변환
                .filter(s->s == n) // 값이 n인 값 필터링
                .count(); // 필터링된 요소의 개수를 셈

        return (int) stream ;
        
// 실행시간
// int[] array = {1,1,2,3,4,5,1,1,1,2,3,4,1}, n = 1
// 실행시간(ms) : 2 ~ 3

 

<다른 사람의 풀이>

향상된 for문을 사용하여 풀이하는 방법도 있다. 

public static int solution3(int[] array, int n) {
    int count = 0; 

    // 배열의 각 요소를 반복하면서 특정 값 n과 같은지 비교
    for (int num : array) {
        if (num == n) {
        count++;
        }
     }
    
    return count; // 특정 값 n의 개수를 반환
}
    
// 실행시간
// int[] array = {1,1,2,3,4,5,1,1,1,2,3,4,1}, n = 1
// 실행시간(ms) : 0

 

 <해설해보기>

향상된 for문 개념 

(링크 첨부 예정)

  •  

 

<느낀점>

상황에 따라 최대한 효율적인 코드를 구상하는 것이 너무 어렵다는 것을 느꼈다, 

어떤 상황에선  Strea을 활용하는 것이 , for, if 문을 사용하는 것이 시간복잡도를 줄일 수 있다...

여러 문제를 다양한 방법으로 접근해보는 능력을 길러야겠다.0-0