티스토리 뷰
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/60057?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 설명
다른 사람들은 좀 더 짧고 간단하게 풀었더라 ;ㅅ;
재귀로 num개 단위로 자르도록 했다.
매개변수에 최솟값도 같이 넣어서 보내도록 했다.
뭔가 코드가 더러운거 같은데 ㅋㅋㅋ 최선을 다했당 아몰랑
3. 코드
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
answer = compress(s, 1, s.length());
return answer;
}
int compress(String s, int num, int min) {
if(num > s.length()/2 + 1) return min;
// num개 단위로 자르기
List<String> list = new ArrayList<>();
for(int i=0; i<=s.length()-num; i++) {
list.add(s.substring(i, i+num));
i += num - 1;
}
int remainder = s.length()%num; // 나머지
// 같은 문자열 찾아서 압축
int n = 1;
String result = "";
String str1 = list.get(0);
for(int j=1; j<list.size(); j++) {
String str2 = list.get(j);
if(str1.equals(str2)) {
n++;
continue;
}
if(n > 1) result += n + str1;
else result += str1;
n = 1;
str1 = str2;
}
if(n > 1) result += n + str1;
else result += str1;
int len = result.length() + remainder;
return compress(s, num + 1, min > len ? len : min);
}
}
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 주식가격 JAVA (0) | 2020.05.12 |
---|---|
프로그래머스 [3차] 방금그곡 JAVA (0) | 2020.05.08 |
프로그래머스 단체사진 찍기 JAVA (backtracking) (0) | 2020.05.05 |
프로그래머스 괄호 변환 JAVA (0) | 2020.05.04 |
프로그래머스 카카오프렌즈 컬러링북 JAVA (DFS) (0) | 2020.05.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday