티스토리 뷰
728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/60057
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문
programmers.co.kr
풀이 및 소스코드
저번에 푸려다가 포기한 문제였는데, 내가 문제를 잘못 이해했기 때문이었다.
문자열 2개로 압축시 0번째+1번째, 2번째+3번째 이렇게 비교만 해주면되는건데
나는 0번째+1번째와 2번째+3번째가 다르면 1번쨰+2번째와 3번째+4번째를 비교해줘야하는 줄 알았다.
무튼 ..
"aabbaccc" 인 경우 2개 단위로 잘라 압축한다고 가정,
변수 설명
tmp : sb와 비교. 2개 단위로 잘린 이전 문자열
sb : 문자 하나하나 넣어준다. 크기가 i가 될때까지. (현재 i==2) 현재 문자열로 보면 된다.
ressb : 압축결과 담는 곳

위 설명에서 동일했던 묶음에 해당하는 변수가 tmp이고, 다른요소에 해당하는 변수가 sb라고 생각하면 된다.
class Solution {
public int solution(String s) {
int answer = 1000;
int n = s.length();
StringBuilder sb;
if(n == 1) return 1;
for(int i=1;i<=n/2;i++) {
sb = new StringBuilder();
String tmp=null;
int cnt = 1;
StringBuilder ressb = new StringBuilder();
for(int j=0;j<=n;j++) {
if(j<n) sb.append(s.charAt(j));
if(j+1 == i) {
tmp = sb.toString();
sb = new StringBuilder();
}
else if(j%i == i-1 || j == n) { //비교요소 끝
if(tmp.equals(sb.toString())) {
sb = new StringBuilder();
cnt++;
}else {
if(cnt == 1) {
ressb.append(tmp);
}else {
ressb.append(cnt).append(tmp);
cnt = 1;
}
tmp = sb.toString();
sb = new StringBuilder();
}
}
}
if(tmp.length()!=0) {
ressb.append(tmp);
}
answer = Math.min(answer, ressb.length());
}
return answer;
}
}
반응형
'Coding - Algo > Java' 카테고리의 다른 글
| [백준] 2563번:색종이 (Java 자바) (0) | 2021.08.10 |
|---|---|
| [SWEA] 사칙연산 유효성 검사 (Java 자바) (0) | 2021.08.10 |
| [프로그래머스] 다리를 지나는 트럭 (Java 자바) (0) | 2021.08.10 |
| [SWEA] 9229:한빈이와 Spot Mart (Java 자바) (0) | 2021.08.09 |
| [SWEA] 암호문1 (Java 자바) (0) | 2021.08.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준 풀이
- 삼성청년SW아카데미
- swea 타일링 자바
- 백준 17144
- 1240 자바
- 1699 자바
- 프로그래머스 파이썬
- 우분투
- ubuntu
- 프로그래머스 더 맵게
- 백준파이썬
- SWEA
- swea 1240 자바
- 3996 자바
- 타일링 자바
- swea 1240
- poker swea
- 더 맵게
- swea 4070 타일링
- yoloV3
- union-find
- 백준 dp 문제
- 프로그래머스 자바
- 파이썬
- 프로그래머스
- 파이썬 풀이
- 메뉴리뉴얼 풀이
- 백준
- swea 타일링
- SSAFY
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함