반응형
알파벳 대문자와 숫자(0~9)로만 구성된 문자열이 입력으로 주어진다. 모든 알파벳을 오름차순으로 정렬하고 마지막엔 모든숫자들을 더한 값을 이어서 출력한다.
입력예시1
input : AJKDLSI412K4JSJ9D
output: ADDIJJJKKLSS20
입력예시2
input : K1KA5CB7
output: ABCKK13
내가 작성한 코드는 try except 를 이용했다. 각 문자가 알파벳인지 숫자인지를 if문으로 비교할 수 도 있었지만 문제를 보고 즉시 생각나는것은 try except 였다. 문자 오름차순 정렬은 내장함수 sorted를 이용했기 때문에 쉬웠다.
s = input()
sum = 0
list = []
for i in range(len(s)):
try:
sum += int(s[i])
except ValueError as e:
list.append(s[i])
result = sorted(list)
for i in result:
print(i, end='')
print(sum)
책의 답은 아래와 같다. 문자열인지 판단은 isalpha 함수, 리스트를 문자열로 출력은 join 함수를 활용했다.
data = input()
result = []
value = 0
for x in data:
if x.isalpha():
result.append(x)
else:
value += int(x)
result.sort()
if value != 0:
result.append(str(value))
# 리스트를 문자열로 변환하여 출력
print(''.join(result))
출처 : 이것이 코딩테스트다 나동빈 저
반응형
'연습' 카테고리의 다른 글
[구현] 자물쇠와 열쇠 (0) | 2021.12.06 |
---|---|
[구현] 문자열 압축 (0) | 2021.11.29 |
[구현] 럭키 스트레이트 (0) | 2021.11.14 |
[구현] 게임 개발 (0) | 2021.11.08 |
[구현] 왕실의 나이트 (0) | 2021.10.31 |