티스토리 뷰
title: "스타 수열"
category: 프로그래머스[Level-3]
tags: [C++, JavaScript, 프로그래머스]
date: "2021-02-21"
문제 링크
C++
#include <string>
#include <vector>
#include <map>
#include <iostream>
using namespace std;
int solution(vector<int> a) {
int answer = 0;
map<int, int> num_count;
for(int e: a) num_count[e]++; // 중복 숫자 갯수
for(auto p: num_count){
if(p.second<answer/2) continue; // 스타수열 길이 이미 짧음
int select=p.first;
int starLen=0;
for(int i=1; i<a.size(); i++){
if(a[i-1]!=select && a[i]!=select) continue; // 선택한 수랑 다를 경우
else if(a[i-1]==a[i]) continue; // 연속 X
// 스타 수열
starLen+=2;
i++; // for. 2칸 next
}
answer=max(answer, starLen); // 최대 갱신
}
return answer;
}
JavaScript
function solution(a) {
var answer = 0;
// 중복 숫자 개수 세기
const num_count = new Map();
a.forEach((v) => {
if (num_count.has(v)) {
num_count.set(v, num_count.get(v) + 1);
} else {
num_count.set(v, 1);
}
});
for (const [select, count] of num_count) {
if (count < answer) continue; // 이미 스타 수열 길이 작음
let cnt = 0;
for (let i = 1; i < a.length; i++) {
if (a[i - 1] !== select && a[i] !== select) continue;
// 지정된 숫자랑 둘다 다를 경우
else if (a[i - 1] === a[i]) continue; // 연속으로 같을 경우
// 스타 수열 가능
cnt++;
i++; // for. 2칸 next
}
answer = Math.max(answer, cnt);
}
return answer * 2;
}
728x90
반응형
'Programmers Solutions > Level-3' 카테고리의 다른 글
[프로그래머스] 블록 이동하기 (0) | 2021.02.22 |
---|---|
[프로그래머스] 길 찾기 게임 (0) | 2021.02.22 |
[프로그래머스] 경주로 건설 (0) | 2021.02.20 |
[프로그래머스] 기지국 설치 (0) | 2021.02.20 |
[프로그래머스] 숫자 게임 (0) | 2021.02.20 |
댓글