[Python] 백준 7120

큐가·2025년 2월 22일
1

백준

목록 보기
6/10

문제

컴퓨터 키보드의 버튼이 눌렸다가 인쇄된 텍스트에 동일한 글자가 두 개 이상 있는 경우가 있습니다. 예를 들어, "piano"라는 단어는 "ppppppiaanooooo"로 바뀔 수 있습니다.
당신의 과제는 이러한 오류를 수정하는 프로그램을 작성하는 것입니다. 주어진 문자열 내에서 동일한 문자가 연이어 나타나는 모든 위치를 찾아서 하나의 문자로 바꿉니다. 즉, 다른 모든 동일한 문자를 지우고 문자열의 나머지 부분을 남은 문자 하나의 끝에 추가합니다.

입력

입력의 첫 번째 줄은 소문자 라틴 문자만 포함하는 문자열입니다. 문자열의 길이는 최대 250자입니다.

출력

출력의 첫 번째 줄에 수정된 문자열을 출력합니다.
(예제 입력: ppppppiaanooooo)

첫 번째 시도 - 실패

s = input()
i = 0
newS = ''
while i < len(s):
    if s[i-1] != s[i]:
        newS += s[i-1]
    i += 1
print(newS)
  • 출력 시 opian이라고 나온다. 이는 i = 0일 때 s[-1]s[0]을 비교하게 됨으로써 나온 오류이다. s[-1]은 문자열의 가장 끝인 s\[len(s)-1]을 의미하는 것이다.
  • 따라서 나는 s[-1]은 문자열의 가장 끝 번호를 의미한다는 것을 알게 되었다. 이후 s[-n]을 출력해보니 문자열의 인덱스를 마이너스로 하면 순환한다는 것을 알게 되었다. 이러한 점을 기억한다면 코드에는 활용될 것 같진 않고 오류를 수정하는데 도움이 될 것 같다.

두 번째 시도 - 실패

s = input()
i = 1
newS = ''
while i < len(s):
    if s[i-1] != s[i]:
        newS += s[i-1]
    i += 1
print(newS)
  • 출력 시 pian이라고 나온다. 이는 문자열에서 o라는 문자는 비교했을 때 항상 같은 경우만 있어서 newS에 추가되지 않아서 생긴 오류이다.
  • 따라서 마지막 문자열은 무조건 추가되어야 한다는 것을 깨달았다.

세 번째 시도 - 성공

s = input()
i = 1
newS = ''
while i < len(s):
    if s[i-1] != s[i]:
        newS += s[i-1]
    i += 1
newS += s[i-1]
print(newS)
  • 마지막 문자열을 추가하는 것으로 코드를 수정하였고, 정상적으로piano가 출력되었다.
profile
대학교 2학년, 컴퓨터학과

0개의 댓글