[이코테] 구현 - 문자열 재정렬 with 파이썬

JIN KANG·2022년 10월 9일

이코테

목록 보기
8/29
post-thumbnail

1. 문제

  • 알파벳 대문자와, 숫자로 구성된 문자열이 입력으로 들어온다.
  • 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력하라.

입력조건

  • 하나의 문자열 S , S의 길이는 1 ~ 10000

출력조건

  • 문제에서 요구하는 문자열

입력예시

K1KA5CB7

출력예시

ABCKK13

2. 아이디어

  • ord()를 이용해서, ord('9') 가 57이고 ord('A')가 65이기 때문에, 57이하인지 아닌지를 판단하여, 문자열에 있는 알파벳과 숫자를 구분한다.
  • 문자는 문자대로 숫자는 숫자대로 분류하면서 문자는 리스트에 숫자는 합산을 한다.
  • 문자는 sort()로 정렬한 후, 숫자가 있는지 판단하고 리스트에 추가한다.
  • 리스트를 join을 이용해서 출력한다.

3. 예제코드

# 입력
problem = input()

# 저장할 변수 생성
nums = 0     
strings = []

# 숫자, 문자 분류 저장
for s in problem:
    if ord(s) <= 57:  # 숫자이면
        nums+=int(s)  # 숫자를 모두 더한다.
    else : 
        strings.append(s)  # 문자면, 리스트에 모은다.

strings.sort()  # 문자열 정렬

# 문자 리스트에 숫자 추가
if nums != 0:   # 숫자가 있으면, 
    strings.append(str(nums))  # 문자열로 변환해서 추가한다. 
    
# 출력 
print(''.join(strings))        # join을 활용해서 프린트

4. 배운점

  • ord()를 떠올렸다. 문자열의 숫자를 알려주는 함수, 그러나 저자는 isalpha()라는 함수를 사용했다.
  • 출력할때, 문자열 더하기를 생각했는데, 저자의 풀이를 보고 join을 다시 한번 상기할 수 있었다.
  • 문자열과 숫자의 처리 방법을 정확히 알아야 하며, 어떤 형태로 다룰지 생각하는 것이 중요하다는 것을 다시 한번 생각하게 됬다.

참고

  • 이것이 취업을 위한 코딩 테스트다. with 파이썬
profile
성장하는 데이터 분석가

0개의 댓글