<aside>
💬 lv1
, 문자열
어떤 문자열이 주어졌을 때, 문자열의 각 문자 뒤에는 해당 문자의 개수가 있습니다. 이러한 형식으로 압축된 문자열을 해제하는 프로그램을 작성해주세요.
예를 들어, 문자열 "a3b2c1"은 "aaabbbc"로 해제됩니다.
압축된 문자열 s
가 매개변수로 주어질 때, 해제된 문자열을 return 하도록 solution 함수를 완성해주세요.
s
의 길이는 1 이상 1,000 이하입니다.s
는 알파벳 소문자와 숫자로만 이루어져 있습니다.s | result |
---|---|
"a3b2c1" | "aaabbbc" |
"a1b1c3d2e1f1" | "abcccddeef" |
"x2y3z1" | "xxyyyzzz" |
"a1" | "a" |
"z9" | "zzzzzzzzz" |
def solution(s):
result = ""
for i in range(len(s)): **#1 문자 확인과 카운트 초기화**
if s[i].isalpha():
char = s[i]
count = ""
j = i + 1
while j < len(s) and s[j].isdigit(): **#2 숫자 추출**
count += s[j]
j += 1
result += char * int(count) **#3 문자열 복원**
return result **#4 결과 반환**
문자 확인과 카운트 초기화
루프를 사용하여 주어진 문자열 s
를 처음부터 끝까지 순회합니다. 각 순회 시 문자가 알파벳인지 확인하고, 알파벳일 경우 해당 문자를 기록하고, 그 뒤따르는 숫자를 카운트하기 위한 빈 문자열을 초기화합니다.
숫자 추출
현재 문자의 바로 다음 위치부터 시작하여 다음 알파벳 문자가 나타날 때까지 숫자를 추출합니다. 이를 위해 내부 루프를 사용하여 현재 위치에서부터 숫자가 연속되는 동안 숫자를 문자열 형태로 카운트 문자열에 추가합니다.
문자열 복원
추출한 숫자(문자열 형태)를 정수로 변환하고, 해당 정수만큼 알파벳 문자를 반복하여 결과 문자열에 추가합니다. 이 과정을 모든 문자에 대해 반복합니다.
결과 반환
모든 문자에 대한 처리가 끝나면, 생성된 결과 문자열을 반환합니다
isalpha() 함수와 isdigit() 함수
기본 형태
.isalpha()
: 문자열의 모든 문자가 알파벳일 경우 True
를, 그렇지 않으면 False
를 반환합니다. .isdigit()
: 문자열의 모든 문자가 숫자일 경우 True
를, 그렇지 않으면 False
를 반환합니다.
개념: 이 메서드들은 파이썬의 문자열(string) 객체에 내장된 메서드로서, 문자열을 구성하는 각 문자가 특정 조건(알파벳 혹은 숫자)에 부합하는지를 판별하는 데 사용됩니다. .isalpha()
메서드는 주어진 문자열 내의 모든 문자가 알파벳(영문자)인지를 검사하며, .isdigit()
메서드는 모든 문자가 숫자(0-9)인지를 검사합니다. 이러한 메서드들은 문자열 처리나 데이터 검증 과정에서 특히 유용하게 활용됩니다.
# .isalpha() 사용 예시
alphabet_string = "abcDEF"
mixed_string = "abc123"
print(alphabet_string.isalpha()) # True 출력
print(mixed_string.isalpha()) # False 출력
# .isdigit() 사용 예시
digit_string = "123456"
mixed_string = "abc123"
print(digit_string.isdigit()) # True 출력
print(mixed_string.isdigit()) # False 출력
def solution(data):
new_str = ''
for idx, chr in enumerate(data): **#1 문자열 순차 탐색**
print(idx, chr)
if chr.isdigit(): **#2 숫자 확인 및 문자 반복**
plus_str = data[idx-1] * int(chr)
new_str += plus_str
else:
continue
return new_str **#3 압축 해제된 문자열 생성**
문자열 순차 탐색
문자열을 순차적으로 탐색하며 각 문자와 그 인덱스를 얻습니다.
숫자 확인 및 문자 반복
만약 현재 문자가 숫자라면, 그 숫자 바로 앞의 문자를 해당 숫자만큼 반복하여 새 문자열에 추가합니다.
압축 해제된 문자열 생성
이 과정을 문자열의 끝까지 계속하여, 최종적으로 압축 해제된 문자열을 얻습니다.