728x90
숫자(0~9)와 알파벳 대문자로 이루어진 문자열 중, 모든 알파벳을 오름차순으로 먼저 출력하고, 그 후 모든 숫자를 더한 값을 이어서 출력하면 되는 문제다.
시간 제한은 1초고, 문자열의 길이는 최대 10,000이다. -> O(NlogN)까지 가능하다는 생각
간단한 구현문제다.
1. 문자열의 원소들을 하나씩 확인한다.
2. 만약 확인한 원소가 문자일 경우 다른 문자열에 삽입한다.
3. 만약 확인한 원소가 숫자일 경우 total 변수에 숫자를 더한다.
4. 1~3과정을 마친 후 문자만 들어가 있는 문자열을 오름차순 정렬한다.
5. 문자만 들어있는 문자열을 출력하고, total변수를 출력한다.
내 코드
# Q_08_문자열 재정렬
s = list(input())
arr = []
total = 0
for char in s:
if char.isalpha():
arr.append(char)
else:
total += int(char)
arr.sort()
for char in arr:
print(char, end='')
print(total)
isalpha함수를 통해 알파벳인 경우와 숫자인 경우를 구분해주었다.
풀이 코드
# Q_08_문자열 재정렬
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))
str 타입을 갖는 변수도 반복문을 돌 수 있다.
그리고 내 코드는 리스트에 숫자가 없는 경우에도 출력할 문자열 끝에 0이 붙는다. 이 코드를 수정해줘야 한다.
그리고 ''.join(result)를 통해 리스트를 문자열로 변환할 수 있다.
''안에 특정 문자를 넣으면 원소 사이사이 특정 문자가 들어간다.
수정한 내 풀이 코드
# Q_08_문자열 재정렬
s = list(input())
arr = []
total = 0
for char in s:
if char.isalpha():
arr.append(char)
else:
total += int(char)
arr.sort()
if total != 0:
arr.append(str(total))
print(''.join(arr))
728x90
'알고리즘 > 이것이 코딩테스트다' 카테고리의 다른 글
10_자물쇠와 열쇠 (1) | 2024.01.26 |
---|---|
09_문자열 압축 (0) | 2023.02.08 |
07_럭키 스트레이트 (0) | 2023.02.06 |
06_무지의 먹방 라이브 (0) | 2023.02.04 |
05_볼링공 고르기 (0) | 2023.02.01 |