[이코테] 구현_문자열 재정렬 (python)

juyeon·2022년 7월 17일
0

문제

나의 풀이

: 간단한 문제지만, 많은 것을 배웠다!

  • sorted(): 첫 번째 매개변수인 iterable한 data를 새로운 정렬된 list로 만들어 반환

1. while 사용: for문으로 했다간 클남!

# 원소 하나씩 분리하여 정렬된 list 생성
alpha_num = sorted(input())
num = '0123456789'
sum_num = 0

# 원소 하나씩 str숫자인지 확인하여, 더함
while True:
    if alpha_num[0] in num:
        sum_num += int(alpha_num[0]) # int 변환하여 더하기
        alpha_num.remove(alpha_num[0]) # 숫자 제거
    else:
        break
sum_num = str(sum_num) # 다시 str로 변환
alpha_num.append(sum_num) # str(숫자)를 list에 합치기
print(''.join(alpha_num)) # 공백 없이 합쳐서 출력
  • 주의할 점! for문은 index를 하나씩 전진시키며 반복한다.
# while 대신에 for문을 사용하면 잘못된 답이 도출됨
# 잘못된 for문 사용:
for i in alpha_num:
    if i in num:
        sum_num += int(i)
        alpha_num.remove(i)
    else:
        break

2. for문 사용: 숫자 빼주는 작업 필수!

# 원소 하나씩 분리하여 정렬된 list 생성
alpha_num = sorted(input())
num = '0123456789'
sum_num = 0

# 원소 하나씩 str숫자인지 확인하여, 더함
for i in alpha_num:
    if i in num:
        sum_num += int(i)
    else:
        break
        
sum_num = str(sum_num) # 다시 str로 변환
alpha_num = [x for x in alpha_num if x not in num] # 숫자 제거
alpha_num.append(sum_num) # str(숫자)를 list에 합치기
print(''.join(alpha_num)) # 공백 없이 합쳐서 출력
profile
내 인생의 주연

0개의 댓글