문자열 재정렬 (구현)

‘풀이시간 20분 , 시간제한 1초, 메모리제한 128MB, Facebook 인터뷰 기출(취코테 with 파이썬 322p 실전문제)’

기본적인 문자열 구현문제이다. 알파벳과 숫자를 무작위로 입력받으면 알파벳은 오름차순, 숫자는 제일 마지막에 합으로 출력하는 문제이다.

python에서는 알파벳도 sort()를 이용해 정렬이 가능하나 이를 몰라서 아스키코드값을 이용하여 숫자로 변환한 후 숫자로 변경하고 오름차순으로 정렬하고 다시 아스키코드값을 이용해 알파벳으로 변환하는 방식으로 했었다;;
파이썬은 알고리즘 풀이 할때마다 여러가지 배우는것 같다 진짜…

💦내가 해결한 방법

s = input()
num = []
alpha = []

for i in range(len(s)):
    if s[i].isnumeric():
        num.append(int(s[i]))
    else:
        alpha.append(int(ord(s[i])) - int(ord('A')))

alpha.sort()

for i in range(len(alpha)):
    alpha[i] = chr((alpha[i]) + int(ord('A')))

for i in range(len(alpha)):
    print(alpha[i], end='')

print(sum(num))



⭐️아주 간결하고 완벽한 답안 ㅡㅡ

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

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

result.sort() ## 문자열 그대로 정렬이 가능함

if len(result) != 0: ## 항상 문자열 하나라도 있으면 문자열 뒤에 숫자를 추가해야함
  result.append(str(value)) ## 값을 문자열로 바꿔서 추가

print(''.join(result)) ## 리스트 출력시 띄우지않고 합쳐서 출력