프로그래머스 스타 수열 JAVA 풀이 (그리디, 시간복잡도)

2026. 5. 4. 18:45·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

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


📌 문제 개요

배열의 부분수열 중에서 특정 조건을 만족하는 “스타 수열”의 최대 길이를 구하는 문제이다.
스타 수열은 각 쌍마다 공통으로 등장하는 원소가 존재해야 하며, 각 쌍의 원소는 서로 달라야 한다.

 

 


📌 접근 방법

  • 스타 수열은 반드시 하나의 공통 원소를 가진다.
  • 따라서 모든 경우를 탐색하는 것이 아니라 특정 값 v를 기준으로 수열을 구성
  • 배열을 순회하며
    • v가 포함된 쌍만 선택
    • 한 번 사용한 원소는 다시 사용하지 않도록 skip 처리

📌 핵심 아이디어

스타 수열 = "공통 원소 기반 수열"

각 값 v를 기준으로 최대 쌍을 만들면 된다

핵심 조건: (a[i] == v || a[i+1] == v) && a[i] != a[i+1]
 

📌 전체 코드

import java.util.*;

class Solution {
    public int solution(int[] a) {

        int n = a.length;
        if (n < 2) return 0;

        int[] count = new int[n];
        for (int num : a) {
            count[num]++;
        }

        int answer = 0;

        for (int v = 0; v < n; v++) {

            if (count[v] * 2 <= answer) continue;

            int pair = 0;

            for (int i = 0; i < n - 1; i++) {

                if ((a[i] == v || a[i + 1] == v) && a[i] != a[i + 1]) {
                    pair++;
                    i++;
                }
            }

            answer = Math.max(answer, pair * 2);
        }

        return answer;
    }
}

 


🧾 정리

  • 완전탐색이 아닌 값 기준 그리디 접근
  • 핵심은 “공통 원소” 개념 파악
  • 시간복잡도 O(N)으로 효율성 통과 가능
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

프로그래머스 순위 JAVA 풀이 (그래프, 플로이드워셜, 순위판별)  (0) 2026.05.05
프로그래머스 단어 퍼즐 JAVA 풀이 (DP, 시간복잡도)  (0) 2026.05.05
백준 9461번 : 파도반 수열 (JAVA)  (0) 2026.04.27
백준 9654번 : 나부 함대 데이터 (JAVA)  (0) 2026.04.26
백준 [2851] 슈퍼 마리오 JAVA 풀이 (브루트포스, 누적합)  (0) 2026.04.25
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 순위 JAVA 풀이 (그래프, 플로이드워셜, 순위판별)
  • 프로그래머스 단어 퍼즐 JAVA 풀이 (DP, 시간복잡도)
  • 백준 9461번 : 파도반 수열 (JAVA)
  • 백준 9654번 : 나부 함대 데이터 (JAVA)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    배열
    실기
    브루트포스
    완전탐색
    기출문제
    dp
    코딩테스트
    level1
    백엔드개발자
    프로그래머스
    springboot
    정렬
    정처기
    Level2
    solved.ac
    알고리즘
    자바
    정보처리기사 실기 기출문제
    자료구조
    수학
    java
    정처기실기
    백준
    문자열
    피보나치
    구현
    정처기오답노트
    level0
    시뮬레이션
    정보처리기사
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 스타 수열 JAVA 풀이 (그리디, 시간복잡도)
상단으로

티스토리툴바