새소식

알고리즘 테스트 ⏲/이코테

[구현] 문자열 재정렬 풀이

  • -
문자열 재정렬

 

[문제]

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

 

[입력]

K1KA5CB7

[출력]

ABCKK13

[입력]

FDSARQWER13579

[출력]

ADEFQRRSW25

 

내 풀이
arr = list(input())
arr.sort()
idx, digit = 0, 0

if any(map(str.isdigit, arr)):
    for i in arr:
        if i.isdigit():
            idx += 1
            digit += int(i)
    arr = arr[idx:]
    arr.append(digit)

for i in arr:
    print(i, end="")

idx는 입력에 들어있는 숫자 원소의 수만큼 나중에 결과 arr에서 잘라낼 값이며 digit은 수들의 합을 더한 결과값이다.

 

문제의 조건에는 나와있지 않으나 만약 입력으로 숫자 원소가 들어오지 않을 경우를 구분하기 위해 arr에 숫자가 들어있는지 판단하기 위해 any 함수로 조건을 걸고 각 원소에 대해 숫자인 경우에만 digit에 더해주고 마지막 자리에 결괏값을 추가해준다.

 

이렇게 해주면 입력에 0만 들어와 결과 digit이 0인 경우에는 0을 출력해주고 숫자가 아예 들어오지 않은 경우에는 출력하지 않는다.

 

 

# 문제 출처 : 이것이 취업을 위한 코딩 테스트다, 나동빈 저

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.