728x90
문자열 재정렬
1) 문제 해결 아이디어
입력된 문자열의 문자를 하나씩 확인한다.
숫자인 경우 합계를 계산하고 알파벳인 경우 리스트에 저장한다.
리스트에 저장된 알파벳을 출력하고 합계를 뒤에 붙여 출력한다.
2) 소스코드
알파벳 여
리스트를 문자열로 변환하는 방법을 몰라 검색을 통해 알게되었다. 단순 반복으로 리스트 문자를 하나씩 붙이는 방법도 있으나 내장함수를 쓰는게 훨씬 빠르고 좋은 방법같다.
처음 코드를 짰을 때 입력된 문자열에 숫자가 하나도 없을 경우를 생각하지 않고 짰더니 "abc"같이 숫자가 없는 문자열의 경우에는 "abc"로 출력되는 것이 아니라 "abc0" 으로 출력되었다. 입력된 문자열에 숫자가 하나도 없을 경우를 고려하여 합계가 0인 경우에는 알파벳 문자열만 출력되도록 해야한다.
s = input()
alphaList = [] # 문자열 내의 알파벳 리스트
sum = 0 # 합계
res = "" # 최중 출력 문자열
# 모든 문자 하나씩 확인하기
for i in s:
# 알파벳이면 리스트에 넣기
if(i.isalpha()):
alphaList.append(i)
# 숫자면 합계 구함
else:
sum += int(i)
res = ''.join(sorted(alphaList)) # 리스트->문자열 변환
# 숫자가 하나도 없을 경우 출력하지 않음
if(sum != 0):
res += str(sum)
print(res)
문자열.isalpha() | 문자열의 구성이 알파벳인지 확인하여 True/False 반환 (문자열에 숫자/공백이 포함되어있으면 무조건 False 반환) |
문자열.isdigit() | 문자열의 구성이 숫자인지 확인하여 True/False 반환 |
''.join(리스트) | 리스트->문자열 변환 (작은 따옴표' ' 안에 있는 문자를 구분자로 하여 문자열로 변환) |
list(문자열) | 문자열->리스트 변환 |
sorted(리스트) | 오름차순 정렬된 리스트를 반환 |
[참고] https://appia.tistory.com/178
728x90
'[Python]알고리즘 > 이코테 2021' 카테고리의 다른 글
[DFS/BFS] DFS 예제 (0) | 2022.03.29 |
---|---|
[구현] 문제5 - 게임 개발 (0) | 2022.03.19 |
[구현] 문제3 - 왕실의 나이트 (0) | 2022.03.18 |
[구현] 문제2 - 시각 (0) | 2022.03.18 |
[구현] 문제1 - 상하좌우 (0) | 2022.03.18 |