String관련 문제입니다.
핵심
문자가 연속해서 나오는지 확인해야 한다. 1번만 나올 경우 1은 생략한다.
정답 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine()+" ";
StringBuilder sb = new StringBuilder();
int count = 1;
for (int i=0;i<str.length()-1;i++){
if (str.charAt(i)==str.charAt(i+1))count++;
else {
if (count!=1)sb.append(count);
sb.append(str.charAt(i));
count=1;
}
}
System.out.println(sb);
}
}
해설
String str은 입력받는 값인데 뒤에 공백을 추가하였다.
이유는 현재의 값과 그다음 값을 비교해야 하는데 마지막 값의 경우 비교를 할 대상이 없기 때문이다.
예를 들어 AAB라고 한다면, 1번째 문자와 2번째를 비교하고, 2번째와 3번째를 비교하고, 3번째와 4번째를 비교해야 하는데,
4번째는 없기 때문에 값을 초과하는 오류가 생긴다. 따라서 공백을 넣어줘서 이러한 오류를 막는다.
현재의 값과 다음 값이 같다면 count를 증가시킨다.
만약 다르다면, 카운트를 sb에 추가하고, 해당 문자도 sb에 추가한다. 만약 count가 1이면 count는 sb에 추가하지 않는다.
개선점이나 오류가 있다면, 댓글 부탁드립니다.
'PS > 알고리즘 문제풀이' 카테고리의 다른 글
[백준] 2204번 도비의 난독증 테스트(java) (0) | 2022.10.12 |
---|---|
*재귀함수* division (0) | 2022.10.12 |
*에라토스테네스의 체* chebyshevtheo (0) | 2022.10.01 |
*완전 탐색* tetris (0) | 2022.09.29 |
*완전 탐색* seat (0) | 2022.09.24 |