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))
4. 배운점
- ord()를 떠올렸다. 문자열의 숫자를 알려주는 함수, 그러나 저자는 isalpha()라는 함수를 사용했다.
- 출력할때, 문자열 더하기를 생각했는데, 저자의 풀이를 보고 join을 다시 한번 상기할 수 있었다.
- 문자열과 숫자의 처리 방법을 정확히 알아야 하며, 어떤 형태로 다룰지 생각하는 것이 중요하다는 것을 다시 한번 생각하게 됬다.
참고
- 이것이 취업을 위한 코딩 테스트다. with 파이썬