알고리즘/이취코테
[이취코테] 문자열 재정렬
서노리
2022. 1. 5. 01:42
반응형
문제
알파벳 대문자와 숫자로만 구성된 문자열이 입력으로 주어진다. 이때 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력하는 프로그램을 작성하시오.
입력 조건: 첫째 줄에 하나의 문자열 S가 주어진다. (1 <= |S| <= 10,000)
출력 조건: 첫째 줄에 문제에서 요구하는 정답을 출력한다.
나의 코드
data = list(input())
data.sort()
sum = 0
result = []
for i in data:
if i.isdigit():
sum += int(i)
else:
result.append(i)
result.append(str(sum))
for i in result:
print(i, end = "")
입력된 문자열을 확인하면서 알파벳인 경우 별도의 리스트에 저장하고 숫자라면 따로 합계를 계산하는 방법으로 풀 수 있다.이 과정에서 isdigit() 함수 혹은 isalpha() 함수를 사용하여 숫자와 알파벳을 식별할 수 있다.
정답 코드
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))
나의 코드와 같은 방식으로 동작한다. 교재 솔루션에서 마지막에 리스트를 문자열로 출력할 때 join() 함수를 사용할 수 있다는 점을 알게 되었다.
참고자료: 이것이 취업을 위한 코딩 테스트다 with 파이썬 - 나동빈 지음(한빛미디어)
반응형