728x90
인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 예습 풀이 코드, 강의에서 설명하는 풀이 코드를 정리하고 있습니다.
- 문제 링크 : https://cote.inflearn.com/contest/10/problem/01-11
- 문제 설명 : 반복되는 문자를 하나의 문자와 반복 횟수로 압축하는 문제
- 예 : KKK -> K3
내 풀이
public String mySolution(String s) {
StringBuilder sb = new StringBuilder();
int count = 1; //반복 횟수
char prev = 0; //반복 문자
for (int i = 0; i < s.length(); i++) {
//직전의 문자와 같은 문자라면
if (prev == s.charAt(i)) {
count++;
continue;
}
//직전에 반복되는 문자가 있었다면, 문자의 개수를 문자열에 추가
if (count > 1) {
sb.append(count);
}
sb.append(s.charAt(i));
prev = s.charAt(i);
count = 1;
}
//마지막까지 반복된 문자가 있을 수 있기때문에
if (count > 1) {
sb.append(count);
}
return sb.toString();
}
강의 풀이
- 문자열의 끝에 공백 문자를 하나 추가하여 좀 더 깔끔한 풀이
public String solution(String s) {
StringBuilder sb = new StringBuilder();
s = s+" "; //반복문의 마지막 i에서 i+1시에 인덱스 범위를 넘는 상황 방지
int count = 1;
for (int i = 0; i < s.length() - 1; i++) {
if (s.charAt(i) == s.charAt(i + 1)) {
count += 1;
} else {
sb.append(s.charAt(i));
if (count > 1) {
sb.append(count);
}
count = 1;
}
}
return sb.toString();
}
'알고리즘 문제풀이' 카테고리의 다른 글
[알고리즘/인프런] 2-1 큰 수 출력하기(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.10 |
---|---|
[알고리즘/인프런] 1-12 암호(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.10 |
[알고리즘/인프런]1-10 가장 짧은 문자거리(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.09 |
[알고리즘/인프런]1-9 숫자만 추출(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.06 |
[알고리즘/인프런]1-8 유효한 펠린드롬(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.05 |
댓글