String(문자열) 다루기 - 0111. 문자열 압축
private static String solution(String str) {
String answer = "";
for(int i=0; i<str.length(); i++) {
int cnt = 1;
while(i<str.length() - 1) {
if(str.charAt(i) == str.charAt(i+1)) {
i++;
cnt++;
}
else break;
}
answer += str.charAt(i);
if(cnt != 1) answer += cnt;
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(solution(sc.next()));
}
private static String solution(String str) {
String answer = "";
str += " ";
int cnt = 1;
for(int i=0; i<str.length() - 1; i++) {
if(str.charAt(i) == str.charAt(i+1)) cnt++;
else {
answer += str.charAt(i);
if(cnt > 1) {
answer += cnt;
cnt = 1;
}
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(solution(sc.next()));
}
나의 풀이는 중첩 반복문을 통해 for
문 내부에 while
문으로 문자열을
순회하도록 구현하였다. 이 때 증감을 보관하는 변수 i
는 조건에 따라
두 반복문에서 동시에 값이 증가하여 불필요한 순회를 줄인다.
강의에서는 하나의 반복문을 통해 나의 풀이와 동일하게 동작하도록 구현했다.
강의의 방식이 좀 더 간결하고 메모리 사용에 더 효율적인 것 같다.