[이코테] 구현 문제 풀이 - 문자열 재정렬

Gorae·2021년 5월 31일
0

알고리즘

목록 보기
2/19
post-thumbnail
본 내용은 나동빈 님의 ‘이것이 취업을 위한 코딩 테스트다 with 파이썬’ 책을 공부하며 쓴 글입니다.

Q8. 문자열 재정렬

문제 요약

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

풀이 순서

  1. 문자를 하나씩 확인한 뒤에, 숫자인 경우 따로 합계를 계산하고, 알파벳인 경우 별도의 리스트에 저장한다.
  2. 최종 리스트를 문자열로 변환하여 출력한다.

답안 예시

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

for x in data:
    if x.isalpha():
        result.append(x)
    else:
        num_sum += int(x)

result.sort()

# 숫자가 하나라도 존재하는 경우 가장 뒤에 삽입
if num_sum != 0:
    result.append(str(num_sum))

# 최종 리스트를 문자열로 변환하여 출력
print(“”.join(result))

느낀점

  • 알파벳 확인을 ord 를 사용하여 시도했는데, isalpha 메서드를 사용하면 훨씬 간편하게 할 수 있었다.

문자열 메서드

isalpha()

  • 알파벳, 한글이면 True 출력
  • 공백, 숫자, ‘:’ 등이 있으면 False 출력
  • 알파벳만 True 로 인식하고 싶은 경우, “문자열.encode().isalpha()” 로 입력하면 됨

isalnum()

  • 알파벳, 한글, 숫자이면 True 출력
  • 공백, 숫자, ‘:’ 등이 있으면 False 출력

isdecimal()

  • int 타입으로 변환 가능한 숫자면 True 출력

isdigit()

  • 숫자처럼 생긴 글자(제곱, 세제곱 등)면 True 출력
  • isdecimal() 보다 넓은 범위

isnumeric()

  • 숫자처럼 생긴 글자(제곱, 제곱근, 분수 등)면 True 출력
  • isdigit() 보다 넓은 범위

isupper()

  • 영어 대문자로만 구성된 경우 True 출력

islower()

  • 영어 소문자로만 구성된 경우 True 출력
profile
좋은 개발자, 좋은 사람

0개의 댓글