////
Search
🧑🏻‍🤝‍🧑🏻

문자열 재정렬

나의 풀이
S = input() nums = 0 # 숫자 합계 alphabets = "" # 알파벳 모음 문자열 for item in S: # 아스키코드 값이 65(A) 이상일 때 알파벳 모음 문자열에 추가 if ord(item) >= 65: alphabets += item # 아스키코드 값이 65(A) 이상은 아니지만, 45(0) 이상일 때 합계에 누적 elif ord(item) >= 45: nums += int(item) # 정렬된 알파벳 모음 문자열과 숫자 합계를 문자열로 변경하여 연결해준다. print("".join(sorted(alphabets)) + str(nums))
Python
복사
강의 풀이
비슷한 방법이긴 하지만, 숫자의 값을 확인한 후 맨 뒤에 붙어주는 방식을 사용하셨다.
하지만, 해당 강의 댓글에서 입력된 문자열의 숫자가 모두 0 일 때는 숫자가 붙지 않는 반례가 있다고 한다.
(... 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력합니다.) 라고 문제에 나와 있다.
문제에서 합계가 0일 경우에는 숫자가 붙지 않는다고 하지 않았기 때문에, 이 부분에 대한 정확한 내용이 문제에 있어야 될 것 같다.
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))
Python
복사