inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

11. 문자열 압축

11.문자열 압축 문제 결과가 맞게 나오는거 같은데 채점사이트에서 오답이라고 합니다. 피드백 주시면 감사하겠습니다.

321

현이

작성한 질문수 15

0

import java.util.*;

public class Main {
    public String solution(String str){
        StringBuilder answer = new StringBuilder();
        char [] tmp = str.toCharArray();
        int dis_Count = 1;
        for(int i=0; i<tmp.length; i++){
            //연속으로 들어올때
            if(i>0 && tmp[i]== tmp[i-1]){
                dis_Count++;
            }
            //연속으로 들어오다 끊길 때
            else if(i>0 && tmp[i]!= tmp[i-1]){
                if(dis_Count > 1){
                    answer.append(dis_Count);
                    dis_Count = 1;
                }
            }
            if(dis_Count == 1){answer.append((tmp[i]));}
        }
        return answer.toString();

    }

    public static void main(String[] args) {
        Main Main = new Main();
        Scanner kb = new Scanner(System.in);
        String str = kb.next();
        System.out.println(Main.solution(str));

    }

}

 

java 코딩-테스트

답변 2

0

현이

아..! 감사합니다. 정답처리되네요 명심하겠습니다

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

제출하신 Java 코드를 보면 문자열 압축 문제에 대한 로직이 거의 올바르게 구현되어 있습니다. 하지만 마지막 문자에 대한 처리가 빠져 있어서, 연속된 문자가 끝까지 이어졌을 때 그 갯수를 결과에 추가하지 않는 문제가 있네요.

예를 들어 입력 문자열이 "aaab"라면 현재 로직대로라면 "aaab"가 출력될 것입니다. 연속된 ‘a’ 문자 세 개에 대한 카운트 3을 추가하지 않기 때문입니다. 반면에 "aaabb"와 같이 연속된 문자가 다른 문자로 바뀌는 경우에는 'a'의 연속 카운트를 추가하고, 'b'는 1개만 있으므로 그대로 b를 결과에 추가합니다.

아래와 같이 반복문이 끝난 뒤에도 dis_Count가 1보다 클 경우 결과 문자열에 그 카운트를 추가하는 로직을 추가해야 합니다.

for(int i=0; i<tmp.length; i++){
    // ...
}

// 이 코드를 for 반복문 다음에 추가해야 합니다.
if(dis_Count > 1){
    answer.append(dis_Count);
}

return answer.toString();

코드를 수정하여 마지막에 연속적으로 나온 문자 갯수도 정확히 카운트해주세요. 그렇게 하면 채점 사이트에서도 올바른 결과를 얻을 수 있을 겁니다.

안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.

0

27

1

갑자기 채점 사이트가 바뀌었어요

0

32

1

문제 리스트 페이지

0

27

1

채점 사이트 관련 질문드립니다

0

23

1

봉우리 문제 질문입니다

0

81

2

씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?

0

64

0

이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?

0

72

0

가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법

0

67

1

좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ

0

85

2

6-7 강의에서

0

48

1

6-6. 장난꾸러기 질문 있습니다.

0

45

1

강의 수강후 코딩테스트

0

109

1

answer 변수 사용 여부

0

44

1

2중 for문

1

85

2

2-11. 임시반장정하기 (Runtime Error)

0

63

1

혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?

0

70

1

이런 풀이는 어떨까요

0

43

1

자바 스트림 방식의 효율성 질문 드립니다.

0

57

1

알고리즘 자료 구조들..

0

62

1

StringBuilder vs BufferdWriter

0

48

1

원더랜드(프림)

0

50

1

이런 코드는 어떤가요?

0

61

1

bfs 풀이

0

57

1

병합정렬

0

56

1