내 풀이
걍 근본없이 막 풀고 틀리면 보완하는 식으로 풀었음.
특히 마지막 문자 때문에 if문을 추가해주었다.
public class Main {
public void solution(String s) {
StringBuilder sb = new StringBuilder();
int count = 1;
for (int i = 1; i < s.length(); i++) {
if (s.charAt(i-1) != s.charAt(i)) {
sb.append(s.charAt(i - 1));
if (count != 1) sb.append(count);
count = 1;
if (i== s.length()-1) {
sb.append(s.charAt(i));
if (count != 1) sb.append(count);
}
} else {
count++;
if (i== s.length()-1) {
sb.append(s.charAt(i));
if (count != 1) sb.append(count);
}
}
}
System.out.println(sb);
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.next();
T.solution(str);
}
}
강사님 풀이
깔끔합니다. 마지막 문자를 위해 뒤에 " " 공백을 넣어줌.
public class Main2 {
public void solution(String s) {
String answer = "";
// 이 부분이 중요, 뒤에 " " 공백을 넣어줌
s = s + " ";
int cnt = 1;
for (int i = 0; i < s.length()-1; i++) {
if (s.charAt(i) == s.charAt(i+1)) {
cnt++;
} else {
answer += s.charAt(i);
if (cnt > 1) answer += String.valueOf(cnt);
cnt = 1;
}
}
System.out.println(answer);
}
public static void main(String[] args) {
Main2 T = new Main2();
Scanner sc = new Scanner(System.in);
String str = sc.next();
T.solution(str);
}
}
'알고리즘 > 인프런_자바코테강의' 카테고리의 다른 글
인프런 13. 큰 수 출력하기 (Java) (0) | 2022.03.30 |
---|---|
인프런 12. 암호(JAVA) (0) | 2022.03.30 |
인프런 10. 가장 짧은 문자 거리 (Java) (0) | 2022.03.26 |
인프런 9. 숫자만 추출 (Java) (0) | 2022.03.25 |
8. 유효한 팰린드롬 (0) | 2022.03.25 |