[프로그래머스|JAVA] 같은 숫자는 싫어 🙅‍♀️ | ArrayList, stream 방식, 향상된 for문 활용

2025. 8. 14. 22:58·💻코딩/💡Programmers
728x90
반응형

[문제 링크]

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,

arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.

 


 

📍 코드

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        List<Integer> list = new ArrayList<>();
        Integer pre = null; // 이전 값 (아직 값 없으므로 Null)
        
        for(int a: arr){
            if(pre == null || a != pre) list.add(a);
            pre = a; // 이전 값 갱신
        }

        return list.stream().mapToInt(Integer::intValue).toArray();
    }
}

💡 접근법

  • 배열의 값을 하나씩 비교하며 숫자가 연속되면 값을 넣지 않는다.
  • ArrayList 사용
  • list 에 아직 값이 없으므로 이전 값(pre)은 null로 초기화
  • 배열을 돌며 이전 값이 null 이거나 현재 값 != 이전 값이면 리스트에 값 추가
  • 이전 값을 그 다음 값으로 갱신
  • list를 int[]로 변환하여 반환하면 답이다.
    • stream() → 리스트를 스트림화
    • mapToInt(Integer::intValue) → Integer → int 변환 + 기본형 특화 스트림
    • toArray() → int[]로 변환

 


 

📍 문제를 대충 읽은 경우...

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        Set<Integer> set = new LinkedHashSet<>();;
        
        for(int a: arr) set.add(a);

        return set.stream().mapToInt(Integer::intValue).toArray();
    }
}
  • 단지 중복을 제거하라는 것인 줄 알았다는 이야기...

 


 

코테 문제뿐만 아니라 일반 시험을 치룰 때도

문제를 대충 읽어서 실수한 적이 많다...🥲

그렇다면 실수가 아닌거겠지만.. 이 부분도 고쳐나갈 부분인 것 같다.

 

 

 

 

728x90
반응형

'💻코딩 > 💡Programmers' 카테고리의 다른 글

[프로그래머스|JAVA] 주식 가격 | 스택 / 큐 사용 ❌ | 간단 풀이 | 스택 / 큐 방법 포함 ⭕️ | 풀이법 2️⃣가지  (4) 2025.08.24
[프로그래머스|JAVA] 로또의 최고 순위와 최저 순위 | Set 활용, 향상된 for문 연습 중 💬, case 문  (4) 2025.08.14
[프로그래머스|JAVA] 의상 | 2️⃣번째 풀이 | Map 활용하여 간결 & 가독성 좋게 💡 , 향상된 for문, getOrDefault()  (4) 2025.08.14
[프로그래머스|JAVA] 완주하지 못한 선수 | Map 사용 ⭕️ , getOrDefault(), 향상된 for문 연습 중💬, iterator() 활용  (2) 2025.08.14
[프로그래머스|JAVA] 폰켓몬 | Set 사용 ⭕️ , contains()  (2) 2025.08.14
'💻코딩/💡Programmers' 카테고리의 다른 글
  • [프로그래머스|JAVA] 주식 가격 | 스택 / 큐 사용 ❌ | 간단 풀이 | 스택 / 큐 방법 포함 ⭕️ | 풀이법 2️⃣가지
  • [프로그래머스|JAVA] 로또의 최고 순위와 최저 순위 | Set 활용, 향상된 for문 연습 중 💬, case 문
  • [프로그래머스|JAVA] 의상 | 2️⃣번째 풀이 | Map 활용하여 간결 & 가독성 좋게 💡 , 향상된 for문, getOrDefault()
  • [프로그래머스|JAVA] 완주하지 못한 선수 | Map 사용 ⭕️ , getOrDefault(), 향상된 for문 연습 중💬, iterator() 활용
망꼬누나
망꼬누나
공부한 내용을 정리하는 공간입니다.
  • 망꼬누나
    망꼬누나의 개발 공부
    망꼬누나
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • ℹ️ 정보 및 실습 (19)
        • ☑️ Git & GitHub (8)
        • ☑️ 프로젝트 (6)
        • ☑️ 회고 및 후기 (5)
      • 🛠 CS (1)
      • 💻코딩 (88)
        • 💡Baekjoon (17)
        • 💡Programmers (71)
      • ✏️공부 (48)
        • 💡OS (1)
        • 💡Network (6)
        • 💡SpringBoot (9)
        • 💡JAVA (21)
        • 💡SQL (1)
        • 💡DB (2)
        • ☁️ Cloud (4)
        • 💡알고리즘 (4)
      • 📌 자격증 (6)
        • 📝정보처리기사 (3)
        • 📝SQLD (3)
  • 블로그 메뉴

    • 홈
    • github
  • 나의 GitHub Contribution 그래프
    Loading data ...
  • 인기 글

  • 태그

    GIT
    baekjoon
    동시성제어
    코딩테스트
    자료구조
    map
    프로그래머스
    네트워크
    자바
    Java
    AWS
    프로그래머스 #JAVA
    백엔드
    github
    알고리즘
    Stream
    데브코스
    트랜잭션
    S3
    Set
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.5
망꼬누나
[프로그래머스|JAVA] 같은 숫자는 싫어 🙅‍♀️ | ArrayList, stream 방식, 향상된 for문 활용
상단으로

티스토리툴바