출처: 2020 KAKAO BLIND RECRUITMENT
그냥 거의 완전 탐색으로 확인하는 방식으로 구현했다.
검색하다가 파이썬 풀이를 봤는데 실행시간이 훨씬 짧아서 그 풀이를 공부해봐야겠다.
function solution(s) {
let answer = 1001;
let answerStr = "";
let cnt = 1;
let scope = 1;
if (s.length === 1) return 1;
while (scope <= s.length / 2) {
for (let i = 0; i < s.length; i += scope) {
if (s.substr(i, scope) === s.substr(i + scope, scope)) {
cnt++;
} else {
answerStr += s.substr(i, scope);
if (cnt !== 1) answerStr += cnt;
cnt = 1;
}
}
answerStr.length < answer ? (answer = answerStr.length) : answer;
answerStr = "";
cnt = 1;
scope++;
}
return answer;
}
// 테스트 케이스
console.log(solution("aabbaccc")); // 7
console.log(solution("ababcdcdababcdcd")); // 9
console.log(solution("abcabcdede")); // 8
console.log(solution("abcabcabcabcdededededede")); // 14
console.log(solution("xababcdcdababcdcd")); // 17
console.log(solution("xxxxxxxxxxyyy")); // 5
console.log(solution("a")); // 1
'코딩테스트 문제풀이' 카테고리의 다른 글
[JavaScript/프로그래머스] 가장 긴 팰린드롬 (2) | 2021.09.13 |
---|---|
[JavaScript/프로그래머스] 신규 아이디 추천 (2) | 2021.09.13 |