1. 문제
알파벳 대문자와 숫자(0~9)로만 구성된 문자열이 입력으로 주어집니다. 이때 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력합니다.
- 예를 들어 K1KA5CB7이라는 값이 들어오면 ABCKK13을 출력합니다.
2. 문제 해결 아이디어
- 문자열 입력됐을 때 문자 하나씩 확인
- 숫자인 경우, 따로 합계를 계산
- 알파벳의 경우, 별도의 리스트에 저장
- 리스트에 저장된 알파벳을 정렬해 출력하고, 합계를 뒤에 붙여 출력하기
✍ 입력
K1KA5CB7
💻 출력
문자열 정렬 : ABCKK
모든 숫자 더하기 : 1 + 5 + 7 = 13
ABCKK13
3. 나의 코드
우선 코드를 작성하기 전에 문자열의 구성이 알파벳인지 한글인지 확인을 해야한다.
문자열의 구성이 알파벳 or 한글인지 확인하는 방법 [isalpha]
isalpha()라는 내장함수 사용, 단 문자열에 기호, 문자, 공백 중 하나라도 포함이 되어있으면 False를 리턴한다.
숫자인지 확인하는 방법 [isdigit]
위와 비슷하게 isdigit()라는 내장함수를 사용하여 확인한다.
이땐 기호, 문자, 공백 중 하나라도 포함이 되어있으면 False를 리턴한다.
input_data = input()
# 424RFD
# ['4', '2', '4', 'R', 'F', 'D']
array=[]
total = 0
for i in range(len(input_data)):
if(input_data[i].isalpha()) :
array = array.append(input_data[i]) # 틀린 표현
array.append(input_data[i]) # 맞는 표현
# append는 재할당해주면 안됨!!!
else :
total += int(input_data[i])
array.sort()
print(''.join(array) + str(total)) # 리스트를 문자열로 변환 후, 숫자의 합을 이어서 출력
4. 정답 코드
생각해보니 내 코드를 작성할 땐, 숫자가 없을 때를 생각 못했다.
그리고 굳이 range를 써서 인덱스를 추가해줄 필요가 없었다.
for x in input_data :
if x.isalpha() :
array.append(x)
else:
total += int(x)
array.sort()
if(total!=0):
array.append(str(total))
print(''.join(array))
'Algorithm' 카테고리의 다른 글
[BaekJoon] 23971 - ZOAC 4 (0) | 2024.11.10 |
---|---|
[BaekJoon] 3052 - 나머지 (0) | 2024.11.10 |
[BaekJoon] 10813 - 공 바꾸기 (0) | 2024.11.10 |
[BaekJoon] 1546 - 평균 (0) | 2024.11.10 |
[이코테] 개미 전사 (0) | 2024.10.22 |