300x250
반응형
문제
2020 KAKAO BLIND RECRUITMENT > 문자열 압축
아이디어
이 문제는 문제를 푼 사람이 많은 것처럼 큰 아이디어를 요구하지 않았습니다.
문자열을 모두 동일한 길이로 잘라낸 뒤 잘라진 문자열 중 동일한 문자열이 있다면 개수를 세어 그에 걸맞은 새로운 문자열을 만들어주기만 하면 됩니다.
다음과 같은 절차를 통해 코드를 작성하면 됩니다.
1. 자를 문자열 길이 탐색 (1~s문자열의 길이/2)
2. 길이만큼 잘라낸 문자열을 모두 탐색하여 동일한 문자열이 있는지 체크
3. 새롭게 만들어진 문자열의 길이들을 비교
4. 모든 문자열 길이를 탐색할 때까지 1~3을 반복
구현 코드 (JavaScript)
function solution(s) {
let res = s.length;
for(let l=1; l<=Math.floor(s.length/2); l++) {
let sentence = ''; // 새롭게 만들어질 문자열
let str = s.substring(0, l); // 길이만큼 잘린 첫 번째 문자열
let count = 1; // 잘린 문자열 중 같은 문자열의 개수
for(let i=l; i<s.length; i=i+l) {
let tempstr = s.substring(i, i+l); // 비교할 잘린 문자열
if(str === tempstr) { // 문자열이 같을 경우
count++;
} else {
if(count === 1) { // 같은 문자열의 개수가 1개일 경우
sentence = sentence + str;
} else { // 같은 문자열의 개수가 1개보다 클 경우
sentence = sentence + count + str;
}
// 비교할 문자열과 개수 초기화
str = tempstr;
count = 1;
}
}
// 문자열을 모두 탐색한 뒤 저장되어 있는 값도 저장
if(count === 1) {
sentence = sentence + str;
} else {
sentence = sentence + count + str;
}
res = Math.min(res, sentence.length);
}
return res;
}
읽어주셔서 감사합니다.
728x90
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 자물쇠와 열쇠 (0) | 2021.03.19 |
---|---|
[Programmers] 괄호 변환 (0) | 2021.03.18 |
[Programmers] 보행자 천국 (0) | 2021.03.14 |
[Programmers] 단체사진 찍기 (0) | 2021.03.13 |
[Programmers] 외벽 점검 (0) | 2021.03.12 |
댓글