11.문자열 압축 문제 결과가 맞게 나오는거 같은데 채점사이트에서 오답이라고 합니다. 피드백 주시면 감사하겠습니다.
320
15 câu hỏi đã được viết
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));
}
}
Câu trả lời 2
0
안녕하세요, 인프런 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
70
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
57
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
65
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
63
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
77
2
6-7 강의에서
0
43
1
6-6. 장난꾸러기 질문 있습니다.
0
39
1
강의 수강후 코딩테스트
0
99
1
answer 변수 사용 여부
0
38
1
2중 for문
1
79
2
2-11. 임시반장정하기 (Runtime Error)
0
57
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
62
1
이런 풀이는 어떨까요
0
38
1
자바 스트림 방식의 효율성 질문 드립니다.
0
50
1
알고리즘 자료 구조들..
0
54
1
StringBuilder vs BufferdWriter
0
42
1
원더랜드(프림)
0
41
1
이런 코드는 어떤가요?
0
53
1
bfs 풀이
0
50
1
병합정렬
0
50
1
26강 임시반장 정하기에서 질문이 있습니다
0
36
1
이번달말에 완강 후 공부 방향
0
64
1
제가 이런 코테가 처음인데 공부방법을..ㅠ
1
102
1
20강 소수 에라토스테네스의 체 런타임 에러가 뜹니다
0
43
1

