[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌธ์์ด ์์ถ
https://programmers.co.kr/learn/courses/30/lessons/60057
๋ฌธ์ ์ ๊ทผ
๊ธด ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์ค์ด๊ธฐ์ํด์ ๋ฌธ์์ด์ n๊ฐ ๋จ์๋ก ์๋ผ์ ๊ฐ์ ๋ฌธ์์ด str์ด n๋ฒ ๋ฐ๋ณต๋๋ฉด nstr๋ก ํํํ์ฌ ์์ถํ๋ ๋ฌธ์ ์ด๋ค.
compressString ํจ์๋ฅผ ๋ง๋ค์ด์ ์์ถํ๋ ค๋ ๋ฌธ์์ด s์ ์๋ฅด๋ ค๋ ๋ฌธ์์ด์ ๊ธธ์ด len์ ๋ฐ์์ s๋ฅผ len๋จ์๋ก ์๋ผ ์์ถํ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ฐํํ๋๋ก ํ์๋ค.
Code
class Solution {
public int solution(String s) {
int answer = s.length();
for(int i = 1; i<=s.length()/2; i++){
answer = Math.min(answer, compressString(s,i));
}
return answer;
}
/**
* ๋ฌธ์์ด s๋ฅผ len๊ธธ์ด๋งํผ ์๋ผ์ ์์ถํ ๋ค, ์์ถํ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ฐํํ๋ค.
*/
public int compressString(String s, int len){
StringBuilder sb = new StringBuilder();
String prev = s.substring(0,len);
int cnt = 1;
int i;
for(i = len; i<s.length(); i+=len){
String cur;
if(i+len>s.length()){
cur = s.substring(i,s.length());
} else {
cur = s.substring(i,i+len);
}
if(prev.equals(cur)){
cnt++;
}
else{
if(cnt == 1){
sb.append(prev);
} else {
sb.append(cnt).append(prev);
cnt = 1;
}
}
prev = cur;
}
// ๋ง์ง๋ง์ ๊ฒ์ฌ๋ฅผ ์ํ๋๊น ํ๋ฒ ๋ ๊ฒ์ฌํ๋ค.
if(cnt != 1){
sb.append(cnt).append(prev);
} else {
sb.append(prev);
}
return sb.toString().length();
}
}
์ด๋ ค์ ๋ ์ / ๋ฐฐ์ด ์ / ๋๋ ์
๋งํ๋ ๋ถ๋ถ์ ๋ง์ฝ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ 11์ธ ๋ฌธ์์ด์ ๋ฑ ๋จ์ด์ง์ง์๋ 3์ด๋ 4๋ก ์๋์ ๋, len๋ณด๋ค ์์ ๊ธธ์ด์ ๋ฌธ์์ด์ด ๋จ์์ ๋ ์ด๊ฒ์ ์ฒ๋ฆฌํ์ง ๋ชปํด์ ํ๋ ธ๋๋ฐ ์์ธ๋ก ์ฝ๊ฒ ์๊ฐํ๊ณ ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋๊น ํ๋ ธ๋ค. ๋๋ฌด ์ด๋ ต๊ฒ ์๊ฐํ๊ณ ์ด์ํ๊ฒ ์ ๊ทผํ๋ ๊ฒ ๊ฐ๋ค.
if(i+len>s.length()){
cur = s.substring(i,s.length());
} else {
cur = s.substring(i,i+len);
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algortihm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ์คํ์ฑํ ๋ฐฉ (0) | 2022.04.12 |
---|---|
[Algorithm/Java][๋ฐฑ์ค] 2263 ํธ๋ฆฌ์ ์ํ (0) | 2022.04.11 |
[Algorithm/Java][๋ฐฑ์ค] 1918 ํ์ ํ๊ธฐ์ (0) | 2022.04.08 |
[Algorithm/Java][๋ฐฑ์ค] 1865 ์ํ (0) | 2022.04.07 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ํ๊ฒ ๋๋ฒ (0) | 2022.04.06 |