
내가 생각했을때 문제에서 원하는부분
The first line of the input is a string containing only lowercase latin letters.
The string is at most 250 symbols in length.
Output the corrected string in the first line of the output.
내가 이 문제를 보고 생각해본 부분
BufferedReader를 사용해 입력 문자열을 읽는다.
StringBuilder result를 선언해 결과 문자열을 저장한다.
StringBuilder는 문자열을 효율적으로 이어 붙일 수 있다.
prev 변수에 이전 문자를 저장하는데, 처음에는 임시로 0(char)로 초기화한다.
반복문을 돌면서 문자열의 각 문자를 순서대로 확인한다.
현재 문자(current)가 이전 문자(prev)와 다르면 결과에 추가하고, 이전 문자를 현재 문자로 바꾼다.
같으면 추가하지 않고 넘어가서 연속된 중복 문자가 한 번만 남게 된다.
반복문이 끝난 후 결과를 출력한다.
br.close();를 호출하여 입출력 객체를 닫아 자원을 해제한다.
코드로 구현
package baekjoon.baekjoon_32;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 백준 7120번 문제
public class Main1289 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
StringBuilder result = new StringBuilder();
char prev = 0; // 이전 문자 저장용 변수, 0은 임의의 초기값
for (int i = 0; i < input.length(); i++) {
char current = input.charAt(i);
// 현재 문자와 이전 문자가 다르면 결과에 추가
if (current != prev) {
result.append(current);
prev = current;
}
// 같으면 무시하여 중복 제거
}
System.out.println(result.toString());
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.