[이것이 코딩 테스트다] 구현 - 문자열 재정렬

YEAh·2021년 3월 7일
0
post-thumbnail

구현
머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정
완전 탐색 - 모든 경우의 수를 주저 없이 다 계산하는 해결 방법
시뮬레이션 - 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행


✅ 문제

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

입력 예시1

K1KA5CB7

출력 예시1

ABCKK13

입력 예시2

AJKDLSI412K4JS9D

출력 예시2

ADDIJJJKKLSS20


💻 코드

data = input()

number_sum = 0
Alphabet_list =[]

# 숫자 0 ~ 9 아스키 코드 값 => 48 ~ 57
# 알파벳 대문자 A ~ Z 아스키 코드 값 => 65 ~ 90
for i in data:
    if 48 <= ord(i) <= 57:
        number_sum += int(i)
    else:
        Alphabet_list.append(i)

Alphabet_list.sort()

# join 함수. 리스트를 문자열로 변환
print(''.join(Alphabet_list), end=str(number_sum))

설계

입력된 문자열을 하나씩 확인하여 대문자인지 숫자인지 파악하고 숫자면 숫자의 합을 만들고 대문자면 리스트에 값을 넣어준다.

➕ 다른 풀이

아스키 코드가 아닌 isalpha, isdigit 함수 사용

isalpha 함수 : 문자열이 문자인지 아닌지를 True, False로 리턴
isdigit 함수 : 문자열이 숫자인지 아닌지를 True, False로 리턴

for i in data:
    if i.isdigit():
        number_sum += int(i)
    else:
        Alphabet_list.append(i)

📝 정리

isdigit, isalpha 함수 기억하기

profile
End up being.

0개의 댓글