알고리즘/이취코테

[이취코테] 문자열 재정렬

서노리 2022. 1. 5. 01:42
반응형

https://youtu.be/2zjoKjt97vQ

이 문제의 해설 영상이다.

문제

알파벳 대문자와 숫자로만 구성된 문자열이 입력으로 주어진다. 이때 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력하는 프로그램을 작성하시오.

 

입력 조건: 첫째 줄에 하나의 문자열 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