반응형
문제
알파벳 대문자와 숫자로만 구성된 문자열이 입력으로 주어진다. 이때 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력하는 프로그램을 작성하시오.
입력 조건: 첫째 줄에 하나의 문자열 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 파이썬 - 나동빈 지음(한빛미디어)
반응형
'알고리즘 > 이취코테' 카테고리의 다른 글
[이취코테] 미로 탈출 (0) | 2022.01.14 |
---|---|
[이취코테] 음료수 얼려 먹기 (0) | 2022.01.14 |
[이취코테] 왕실의 나이트 (0) | 2022.01.05 |
[이취코테] 시각 (0) | 2022.01.05 |
[이취코테] 만들 수 없는 금액 (0) | 2022.01.04 |