programmers.co.kr/learn/courses/30/lessons/70130
코딩테스트 연습 - 스타 수열
programmers.co.kr
/*
*
* 조건 1 : 스타수열 길이 2이상
* 조건 2 : 인접한 2개의 값씩 묶었을 때, 모든집합에서 교집합 원소 갯수 1개 이상
* 조건 3 : 인접한 2개의 값씩 묶었을 때, 각 집합에 있는 2개의 값은 서로 다른 값
*
* */
class Solution {
public static int solution(int[] a) {
int answer = 0;
int[] count = new int[a.length];//a 원소의 등장횟수
for (int i = 0; i < a.length; i++) count[a[i]]++;
for (int i = 0; i < count.length; i++) {//공통된 원소로 선택할 값
if(count[i]==0) continue;//배열에 없으면 공통된 원소가 아님
if(count[i]<=answer) continue;//가장 많이 사용된 횟수보다 작으면 긴 스타수열 만들수 x
int tmp = 0;//해당 숫자가 사용된 횟수
for (int j = 0; j < a.length-1; j++) {//배열 탐색 반복
//인접한 2개의 값을 봤을 때 ,어느 하나라도 공통된 원소를 가지고 있어야한다.
if(a[j] != i && a[j+1] !=i)continue;
//인접한 2개의 값이 동일하지는 않은지 - 스타수열의 조건 3
if(a[j] == a[j+1])continue;
tmp++; j++;
}
answer = Math.max(answer, tmp);//현재까지 스타수열을 만드는데 가장 많이 사용된 횟수
}
return answer*2;//공통된 원소가 사용될 때마다, 인접한 값 하나씩을 더 가지고 있으므로
}
}
'ALGORITHM > 프로그래머스 | 백준 | 삼성 | 카카오' 카테고리의 다른 글
[백준] 18222번 투에-모스 문자열 java (0) | 2021.04.16 |
---|---|
[프로그래머스] 2019 카카오 개발자 겨울 인턴십 징검다리 건너기 java (0) | 2021.04.06 |
[프로그래머스] 짝지어 제거하기 java (0) | 2021.04.01 |
[백준] 1244 스위치 켜고 끄기 java (0) | 2021.03.30 |
[백준] 1543 문서 검색 java (0) | 2021.03.29 |