본문 바로가기
코딩테스트/구현

<PART 3> Q8. 문자열 재정렬

by brown_board 2022. 11. 15.
728x90

알파벳 대문자와 숫자(0~9)로만 구성된 문자열이 입력으로 주어집니다. 이때 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 어어서 출력합니다.

입력 예시 1)
K1KA5CB7

출력 예시 1)
ABCKK13

입력 예시 2)
AJKDLSI412K4JSJ9D

출력 예시 2)
ADDIJJJKKLSS20

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import sys
sys.stdin = open('input.txt')
 
for test in range(2):
    result = []
    count = 0
    n = list(input())
    #원소하나씩꺼내기
    for i in n:
        if i.isalpha():
            result.append(i)
        else:
            count += int(i)
    #알파벳 먼저 정렬
    result = sorted(result)
    result.append(str(count))
    print("".join(result))
cs

풀이: 입력예시를 input.txt.파일로 만들어 입력을 자동으로 받게 만들었습니다. 알파벳을 오름차순으로 정렬해야 하므로 먼저 sorted함수를 이용해서 정렬해줍니다. 그 다음 숫자는 더하기 연산을 진행하여 마지막에 추가해줍니다. 이렇게 문자 1개씩 저장된 result리스트를 1개의 문자열로 만들어 줍니다.

배운 점:
1. 문자열을 문자 1개씩 바꿀려면 list함수를 사용하면 된다.
2. result.sort를 작성하면 바껴야하는데 컴파일해도 안바뀌더라 뭔가 오류가 생긴것 같은데 코테볼때도 sorted써야할듯?
3. isalpha()를 안 쓴지 오래되서 까먹었었다. 그리고 isdigit()는 숫자를 찾는 함수이다. isdigit()를 쓴 풀이도 가능하다.
4. 알파벳도 sort를 사용하면 정렬이 된다.

728x90

댓글