알맹이방
[프로그래머스] 2020 KAKAO BLIND RECRUITMENT 문자열압축 - java 본문
import java.util.ArrayList;
class Solution {
public int solution(String s) {
int answer = s.length();
for( int i = 1 ; i<=s.length()/2; i++){ //몇글자로 자를 건지
StringBuilder result = new StringBuilder();
ArrayList<String> str = new ArrayList<String>(); //글자 별로 나눠서 저장할 str
int finword = s.length()%i; //마지막 나누어지지 않는 글자 갯수 그대로 더하기
for(int j = 0; j<=s.length()-i; j+=i){
str.add(s.substring(j, j+i));
}
//System.out.println(str);
int cnt = 1;
for(int q = 0; q<str.size()-1; q++){
if(str.get(q).equals(str.get(q+1))){
cnt++;
}
else{
if(cnt>1){
result.append(cnt);
}
result.append(str.get(q));
cnt=1;
}
}
if(cnt>1){
result.append(cnt);
result.append(str.get(str.size()-1));
}
else{
result.append(str.get(str.size()-1));
}
//System.out.println(result);
//System.out.println(finword);
if(answer>(result.length()+finword)){
answer=result.length()+finword;
}
}
return answer;
}
}
뭔가 더 ArrayList를 사용하자는 생각이 든다.
import java.util.ArrayList;
class Solution {
public int solution(String s) {
int answer = 0;
for( int i = 1 ; i<=s.length()/2; i++){ //몇글자로 자를 건지
StringBuilder result = new StringBuilder();
ArrayList<String> str = new ArrayList<String>(); //글자 별로 나눠서 저장할 str
int finword = s.length()%i; //마지막 나누어지지 않는 글자 갯수 그대로 더하기
for(int j = 0; j<s.length()-i; j+=i){
str.add(s.substring(j, j+i));
}
//System.out.println(str);
int cnt = 1;
for(int q = 0; q<str.size()-1; q++){
if(str.get(q).equals(str.get(q+1))){
cnt++;
}
else{
if(cnt>1){
result.append(cnt);
}
result.append(str.get(q));
cnt=1;
}
}
if(cnt>1){
result.append(cnt);
str.get(str.size()-1);
}
else{
str.get(str.size()-1);
}
System.out.println(str);
}
if(answer>(str.size()+finword)){
answer=str.size()+finword;
}
return answer;
}
}
class Solution {
public int solution(String s) {
int answer = 0;
StringBuilder result = new StringBuilder( "" );
for(int j = 0 ; j<s.length(); j++){
int cnt = 1;
for(int i = 0 ; i<s.length(); i = i+j){ //i=i+j
if(i!= s.length()-1){
String str = s.substring(i, i+j);
String str2 = s.substring(i+j, i+(j*2));
if(str.equals(str2)){
cnt ++;
}
else{
if(cnt>1){
result.append(Integer.toString(cnt));
}
result.append(str);
cnt=1;
}
}
else{
String str = s.substring(i, i+1);
if(cnt>1){
result.append(Integer.toString(cnt));
}
result.append(str);
cnt=1;
}
}
}
System.out.println("result : "+result);
return answer;
}
}
class Solution {
public int solution(String s) {
int answer = 0;
StringBuilder result = new StringBuilder( "" );
//for j
int cnt = 1;
for(int i = 0 ; i<s.length(); i = i+1){ //i=i+j
if(i!= s.length()-1){
String str = s.substring(i, i+1);
String str2 = s.substring(i+1, i+2);
if(str.equals(str2)){
cnt ++;
}
else{
if(cnt>1){
result.append(Integer.toString(cnt));
}
result.append(str);
cnt=1;
}
}
else{
String str = s.substring(i, i+1);
if(cnt>1){
result.append(Integer.toString(cnt));
}
result.append(str);
cnt=1;
}
}
System.out.println("result : "+result);
return answer;
}
}
class Solution {
public int solution(String s) {
int answer = 0;
String exam = "aabbaccc";
String result="";
//for j
int cnt = 1;
for(int i = 0 ; i<exam.length(); i = i+1){ //i=i+j
if(i!= exam.length()-1){
String str = exam.substring(i, i+1);
String str2 = exam.substring(i+1, i+2);
if(str.equals(str2)){
cnt ++;
System.out.println("count++ : "+cnt);
}
else{
if(cnt>1){
result.concat(Integer.toString(cnt));
}
result.concat(str);
System.out.println(result);
cnt=1;
}
}
}
System.out.println(result);
System.out.println(exam);
return answer;
}
}
'알고리즘 > [2020] 프로그래머스' 카테고리의 다른 글
[프로그래머스] Summer/Winter Coding(2019) 종이접기 - java (0) | 2020.05.26 |
---|---|
[프로그래머스] H-Index - java (문제 해설 포함) (0) | 2020.05.19 |
[프로그래머스] 큰 수 만들기 - java (0) | 2020.05.10 |
[프로그래머스] 스킬트리 - java (0) | 2020.04.29 |
[프로그래머스] 124 나라의 숫자 - java (0) | 2020.04.20 |
Comments