본문 바로가기

Python 카테고리

알파벳 개수 알고리즘

실행 화면

위의 화면과 같이 aaabbcabc를입력하면 같은 알파벳 모음으로 a가 4개면 a4로 출력되는 방식입니다.

 

코드

 

코드를 확인해보자면 일단 입력하기위해 string이라는 변수로 입력을 받아줍니다.

 

그리고 for문을 실행시키기 위해 len_str을 만듭니다.

 

그리고 다음 알파벳이 같은 알파벳이 나올 때마다 추가시켜주어야 하기 위해 plus라는 숫자 1을 넣어줍니다. 

 

숫자 1로 넣어주는 이유는 0으로 시작하면 카운트가 0부터 시작하기 때문에 "원래 값 - 1"로 되기 때문입니다.

 

그리고 for문을 돌리면서 알파벳이 다른 알파벳을 바뀌고 그 만큼 센 숫자를 저장하기 위해 숫자를 저장하는 list_plus

 

와 string_storage 리스트를 만들어줍니다.

 

이제 for문을 돌립니다. if문으로 string 입력하기위한 input의[i]번째와 그 뒷 번호 [i + 1]을 비교하여 같으면 + 1을 해줍니다.  

 

else문은 당연히 그것이 i번째와 i + 1번째가 같지 않은 것이니 list_plus에 지금까지 1씩 추가시킨 숫자를 추가시켜줍니다.

 

string_storage는 말했듯이 나온 알파벳을 추가시켜줍니다. 그리고 다시 처음부터 해주기 위해 plus를 1로 초기화 시켜줍니다.

 

그래야 다음 알파벳이 나온 뒤 다시 세기때문입니다. 하지만 if문을 이렇게 하면 for문 range때문에 마지막 것을 넣지 못합니다.

 

그럴 땐  아까 if문 안에 if문을 하나 더 넣고 i번째와 마지막 것이 순서가 같으면 아까와 같은 방식으로 추가 시켜줍니다.

 

하지만 여기서 if문 안에 없으니 마지막 것과 마지막에서 2번째 것이 같지 않다면 for문이 전부 끝난후 마지막 것과 마지막에서 

 

2번째 것을 비교하여 다르다면 같은 방식으로 추가합니다. 여기서 마지막 것과 같지 않으니 당연하게 1을 추가시켜줍니다.

 

그리고 for문으로 출력시켜줍니다. append로 추가 시켰으니 전부 차례대로들어갔을테니 숫자와 알파벳이 알맞게 들어갑니다.

 

if문안에 if문을 제거한 코드
실행 화면

마지막 것이 앞쪽의 다른 알파벳과 다를 때 코드가 없으면 이런 상황이 일어납니다.

 

 

 

밑의 if문을 제거한 코드

 

실행 화면

마지막 알파벳과 그 전 알파벳이 다를 때 나오지 않습니다.

 

인터넷에서 본 것이 아닌 생각해서 저만의 코드라서 더럽고 복잡합니다. 더욱 깨끗이 수정해보겠습니다.

'Python 카테고리' 카테고리의 다른 글

CodeUp 1051~1060(★☆☆☆☆)  (0) 2019.09.28
CodeUp 1041~1050(★☆☆☆☆)  (0) 2019.09.20
CodeUp 1031~1040(★☆☆☆☆)  (0) 2019.09.18
CodeUp 1021~1030(★☆☆☆☆)  (0) 2019.09.17
CodeUp 1011~1020(★☆☆☆☆)  (0) 2019.09.15