본문 바로가기
알고리즘

[Python]문자열 압축하기(E-PPER 15회 5번)

by 말랭쓰 2021. 3. 18.
320x100

[ 15회 EPPER ] 5번 문자열 압축

문제

0과 1로만 이루어진 비트열에서 같은 비트가 연속해서 등장하는 횟수들을 줄일 수 있다.

예를 들어, 첫문자가 0으로 시작하는 경우, CDA라고 표기하여 저장공간을 줄일 수 있는데, C는 0이 3개연속으로, D는 1이 4개, A는 0이 1개가 연속으로 등장했다는 의미이다.

 

제한사항

- 입력으로 주어지는 문자열의 길이는 1 이상 10,000 이하

- 문자열에는 0과 1이외의 문자는 등장하지 않음

- 동일한 문자가 26회이상 연달아 등장할때는 'Z'로, 동일한 문자는 27회 이상 연달아 등장하지 않음

- 비트열이 1로 시작하는 경우에는 저장 공간의 제일 앞에 1을 붙여서 혼돈 방지 ex) '110100'의 경우 '1BAAB'로 출력

 

입출력 예

#1

-입력: "00011110"

-출력:"CDA"

 

#2

-입력: "111100100011"

-출력:"1DBACB"

 

솔루션

 

def solution(input):
	num = len(input)
	alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
	ans=[]
	count=0
	
	if input[0]=='1':
		ans.append('1')
		
	for i in range(1,num):
		if (input[i] != input[i-1]):
			ans.append(alphabet[count])
			count=0
		else:
			count=count+1
		
	ans.append(alphabet[count])
	return ans

user_input = input()
user_input = str(user_input)
answer = solution(user_input)
print("".join(answer))

 

- list에 append로 값 넣어줌

- 리스트를 문자열로 바꾸어 출력할때 "구분자".join(리스트)를 사용

 

 

문제 출처 : level.goorm.io/exam/100821/15%ED%9A%8C-epper-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%95%95%EC%B6%95/quiz/1

 

구름LEVEL

코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입니다. 기업에서 선호하는 C, C++, 파이썬(Python), 자바(Java), 자바스크립트(Javascript) 이

level.goorm.io

 

300x250
반응형

댓글