Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 싸피 합격
- 프록시
- 세마포어와 뮤텍스의 차이
- 호스팅이란?
- 플로이드 와샬
- SSAFY
- Dijkstra Algorithm
- 플로이드 워셜
- 다익스트라 알고리즘
- 세마포어와 뮤텍스
- 삼성 청년 SW 아카데미
- 뮤텍스란?
- Proxy
- 서버 호스팅
- 싸피 면접 후기
- 프록시서버
- floyd-warshall
- 호스팅
- 웹 호스팅
- 세마포어
- Synchronization
- 뮤텍스
- 세마포어란?
- 싸피
- Proxy Server
- 동기화
- 클라우드 서버
- 최단 경로
- 다익스트라
Archives
- Today
- Total
어제의 나보다 성장한 오늘의 나
[프로그래머스][2020 KAKAO BLIND RECRUITMENT][자바스크립트] 문자열 압축 본문
알고리즘/프로그래머스(Programmers)
[프로그래머스][2020 KAKAO BLIND RECRUITMENT][자바스크립트] 문자열 압축
NineOne 2021. 5. 3. 22:04programmers.co.kr/learn/courses/30/lessons/60057?language=javascript
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문
programmers.co.kr
function solution(s) {
let answer = s.length;
for(let i=1; i<=s.length/2; i++){
let result = 0;
let strIndex = i;
let index = 0;
let strArray = [s.substring(0, strIndex)];
let strNumArray = [1];
let str = '';
while(true){
if(strIndex > s.length) break;
if(strIndex+i <= s.length) str = s.substring(strIndex, strIndex+i);
else str = s.substring(strIndex, s.length);
if(strArray[index] === str) {
strNumArray[index]++;
}
else{
strArray.push(str);
strNumArray.push(1);
index++;
}
strIndex += i;
}
result += strArray.join('').length;
for(let j=0; j<strNumArray.length; j++){
if(strNumArray[j] == 1) continue;
result += String(strNumArray[j]).length;
}
answer = Math.min(answer, result);
}
return answer;
}
정리
- 우선 가장 바깥 포문은 s의 길이 /2 만큼 돌린다. 그 이상으로는 압출을 할 수 없기 때문이다.
- 문자열을 저장하는 배열 strArray과 그 문자열이 몇 개가 존재하는지 strNumArray 배열을 선언해준다.
- 현재 문자열과 다음문자열이 같다면 문자열 개수를 증가시켜준다.
- 다르다면 새로운 문자열을 strArray에 저장한다.
- while문이 끝나면 strArray에 들어 있는 것들이 문자열이기 때문에 join으로 문자열을 다 합치고 길이를 더한다.
- strNumArray에 2이상인 값들은 압축을 했기 때문에 result에 더해준다.
주의사항으로 'a' 같이 한 글자만 들어올 때를 처리해줘야 하므로 answer = s.length로 해주었다.
'알고리즘 > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스][2019 KAKAO BLIND RECRUITMENT][자바스크립트] 실패율 (0) | 2021.05.05 |
---|---|
[프로그래머스][2020 KAKAO BLIND RECRUITMENT][자바스크립트] 괄호 변환 (0) | 2021.05.04 |
[프로그래머스][2021 KAKAO BLIND RECRUITMENT][자바스크립트] 순위 검색 (0) | 2021.05.02 |
[프로그래머스][2021 KAKAO BLIND RECRUITMENT][자바스크립트] 합승 택시 요금 (0) | 2021.05.01 |
[프로그래머스][2021 Dev-Matching][자바스크립트] 다단계 칫솔 판매 (0) | 2021.04.29 |
Comments