본문 바로가기
I can do it on my own!/우당탕탕

[이코테] 15강 문제 '문자열 재정렬'

by zivvon 2023. 5. 19.
목차 접기

문제

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

 

예를 들어 K1KA5CB7이라는 값이 들어오면 ABCKK13을 출력합니다.

 

문제 조건

풀이 시간 20분, 시간 제한 1초, 메모리 제한 128MB

 

입력

첫째 줄에 하나의 문자열 S가 주어집니다.

 

출력

첫째 줄에 문제에서 요구하는 정답을 출력합니다.


'문제 해결 아이디어'

입력 받은 문자열을 하나씩 확인한다. 숫자인 경우 따로 sum을 계산하고 알파벳은 리스트에 저장하여, 리스트에 저장한 알파벳은 정렬 후 출력하고 그 뒤에 합계를 붙여 출력한다.

 

'정답 코드'

s = input()

list = []
sum = 0

for i in s:
  # 알파벳인 경우
  if i.isalpha():
    list.append(i)

  # 숫자인 경우
  else:
    sum += int(i)

list.sort()

if sum != 0:
  list.append(str(sum))

print(*list, sep='')

 

'공부한 것'

- isalpha() 함수 : 문자열이 영어 또는 한글로만 이루어져 있는지 확인하고 True, False로 반환하는 함수

~> 공백, 특수문자, 숫자가 포함되어 있으면 False를 반환

~> 한글도 인식! 따라서 영어, 한글로만 되어있으면 True를 반환

 

- join() 함수 : 매개변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어 반환하는 함수

~> 모양 : '구분자'.join(리스트)

ex) 구분자 없이 ''.join(리스트)일 때, 매개변수로 들어온 ['a', 'b', 'c'] 리스트를 'abc'의 문자열로 합쳐서 반환ex) '_'.join(리스트)일 때, 'a_b_c'로 문자열로 반환

 

'돌아보며'

아직도 모르는 파이썬 내장함수가 많음을 깨달았다. 빨리 고수의 단계로 넘어가고 싶다~~