[공부] 파이썬 문자열 문법, 문자열 재정렬 문제

zero_0·2021년 9월 23일
0

알고리즘

목록 보기
8/10
post-thumbnail

python문법

문자열 나누기 - .split(구분자)함수

이 함수는 파라미터로 구분자를 주면 해당 구분자를 기준으로 문자열을 잘라 리스트 형식으로 반환합니다. 만약 파라미터에 아무것도 주지 않으면 공백을 기준으로 문자를 나눕니다.

str = "Hi my name is youngeun" 
splitted_str = str.split() 
print(splitted_str) 

>>>['Hi', 'my', 'name', 'is', 'youngeun'] 

문자열 합치기 - ''.join(리스트)함수

join함수는 리스트의 문자열들을 합치는 역할을 합니다.

str = "Hi my name is youngeun" 
splitted_str = str.split() 
print(splitted_str) 

>>>['Hi', 'my', 'name', 'is', 'youngeun'] 

joined_str = "".join(splitted_str) 
print(joined_str) 

>>>Himynameisyoungeun

위 방법은 단순히 문자열을 붙히기만 합니다. 이어줄 문자 사이에 특정 문자를 넣고 싶다면 아래와 같이 사용할 수 있습니다.

"특정문자열".join(리스트)


str = "Hi my name is youngeun" 
splitted_str = str.split() 
print(splitted_str) 

joined_str = "_".join(splitted_str) 
print(joined_str) 

>>>Hi_my_name_is_youngeun

문자열 재정렬 문제

  • 알파벳 대문자와 숫자(0~9)로만 구성된 문자열이 입력으로 주어짐
  • 이때 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤, 그 뒤에 모든 숫자를
    더한 값을 이어서 출력한다
    예) K1KA5CB7 -> ABCKK13

입력 : 문자열 S가 주어진다. (1 <= S <= 10,000)
출력 : 알파벳 순서대로 출력 + 숫자는 계산하여 출력

data = input()
result = []
value = 0

# for 문으로 문자를 하나씩 확인하며
for x in data:
    if x.isalpha(): # isalpha() 함수로 알파벳일 때, 결과 리스트에 삽입
        result.append(x)
    else: # 숫자라면
        value += int(x) # 문자열로 받았으니까 int 정수형으로 바꿔주고 합산함

# 알파벳 오름차순 정렬
result.sort()
# 숫자가 하나라도 존재하면 가장 뒤에 삽입
if value != 0: # 숫자를 입력하지 않을 수 도 있음.
    result.append(str(value)) # 숫자 int니까 다시 문자열로 바꿔서 result 뒤에 넣어줌

print(''.join(result)) # 공백없이, 리스트에 포함된 모든 문자열을 합쳐서 나열

결과>
<풀이과정>

  • 문자열 입력되었을 때 문자를 하나씩 확인
  • 숫자인 경우 따로 합계 계산
  • 알파벳의 경우 별도의 리스트에 저장
  • 결과적으로 리스트에 저장된 알파벳을 정렬해 출력하고, 합계를 뒤에 붙여 출력하면 정답
  • 사용된 함수 : .isalpha() , .sort(), .append() , str() ,int(), ''.join()
profile
차근차근 채워가는 it일지

0개의 댓글