본문 바로가기
Coding/Python

[ 백준 / Python ] 7120번: String

by 이응이응잉 2025. 2. 9.

문제

It sometimes happens that a button on the computer keyboard sticks and then in the printed text there are more than one identical letters. For example, the word "piano" can change into "ppppppiaanooooo".

Your task is to write a program that corrects these errors: finds all the places within the given string, where identical letters follow each other and replaces them with one letter- that is, erases all the other identical letters and adds the remaining part of the string onto the end of the one remaining letter.

 

(번역) 때때로 컴퓨터 키보드의 버튼이 눌려서 인쇄된 텍스트에 동일한 글자가 여러 개 있는 경우가 있습니다. 예를 들어, "피아노"라는 단어는 "pppppiaanoooo"로 바뀔 수 있습니다.

당신의 임무는 이러한 오류를 수정하는 프로그램을 작성하는 것입니다: 주어진 문자열 내에서 동일한 문자들이 서로 뒤따르는 모든 자리를 찾아서 하나의 문자로 대체하는 것입니다. 즉, 다른 모든 동일한 문자들을 지우고 문자열의 나머지 부분을 하나의 남은 문자 끝에 추가하는 것입니다.

입력

The first line of the input is a string containing only lowercase latin letters. The string is at most 250 symbols in length.

 

(번역) 입력의 첫 번째 줄은 소문자 라틴 문자만 포함된 문자열입니다. 문자열의 길이는 최대 250개의 기호입니다.

출력

Output the corrected string in the first line of the output.

예제 입력 1 복사

ppppppiaanooooo

예제 출력 1 복사

piano

코드 답안

string = list(input())
s = string[0]
for i in range(len(string)-1):
    if string[i] != string[i+1]:
        s += string[i+1]
print(s)

 

 

처음에 조건문만 사용해서 여러가지 시도를 해보며 코드를 수정하다보니 문자열로 저장해서 다른 문자와 달라지는 첫 지점을 찾고 그 지점을 저장하면 된다는 것을 깨달았다.

그것을 바탕으로 작성한 코드이다.

 

string = list(input()) →  list() 함수를 이용한다. → 각 문자 하나씩을 다룰 수 있도록  입력받은 문자열을 리스트로 변환함.

s = string[0]  문자열에서 처음으로 나온 문자를 s에 저장한다.

 

for ~ in 반복문을 이용해 반복해준다. 처음엔 범위를 피아노 예시만 생각하면서 고정 숫자만 썼는데, 다른 문자열에도 적용할 수 있어야한다는 생각이 들어서 len() 함수를 찾아 적용하였다.

   ?  len() = 길이를 구하는데 사용되는 함수이다. 예를 들어 Hello가 string에 입력되어있다면 len()에서 5를 반환한다. 문자        열은 0부터 시작하므로 -1을 해주어 range() 범위를 지정한다.

if string[i] != string[i+1] → 현재 문자가 다음 문자열과 다르다면...

s += string[i+1] → 해당 문자를 s에 저장한다.