새소식

Programming/Algorithm

[구현 알고리즘] 문제: 문자열 재정렬

  • -

https://youtu.be/2zjoKjt97vQ?si=C2xtuq7aedV-mwg2

본 내용은 위 유투브를 참고해서 작성했음을 밝힙니다!


<문제> 문자열 재정렬

출처: 동빈나 유투브
출처: 동빈나 유투브

 

문제 해결 아이디어

출처: 동빈나 유투브

 

나의 풀이
input_data = input() # K1KA5CB7
sorted_data = sorted(input_data)
num = 0
result = ''
# print(ord('0')) # 48
# print(ord('9')) # 57
for s in sorted_data:
    if 48 <= ord(s) <= 57:
        num += int(s)
        # print(num)
    else:
        result += s
result += str(num)    
print(result)
#%% md
* 일단 문자열 입력 받아서 리스트에 넣어서 정렬하고..
* 그 다음에 문자랑 숫자가 몇개가 들어오는지 모르니까 아스키코드 사용해서 더해주면 좋을 듯? 
* 답이 나왔다! 얏호
* str을 사용하니까 에러가 뜨는데 파이썬 파일로 실행하니까 잘 된다.. 
* 주피터 노트북과 str이 뭔가 충돌하는게 있는듯..???

 

강의 풀이
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))
#%% md
* 여기서도 비슷한데, isalpha()라는 파이썬 메소드를 사용해서 좀 더 깔끔하게 진행했다. 
* 아마 C로 짜던 버릇이 아직 남아있는 것 같다.//
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.