본문 바로가기
  • (و ˃̵ᴗ˂̵)و Go for it
기타등등

[Phython] 엘리스 코딩_파이썬 기초2 실력 확인 문제 정답! ④ 정렬덧셈 (해설 있음)

by kanuu 2023. 4. 18.
반응형

3. 정렬 덧셈

 
도도새는 10진법에서 사용 가능한 새로운 연산자를 만들어 사용해보려고 합니다. 
 
연산자 @ 는 연산자 앞 뒤의 피연산자를 자릿수별로 오름차순 정렬해 더한 결과를 자릿수별로 내림차순 정렬합니다. 
 
 

dodo_input = input()
dodo_input = dodo_input.split(' @ ')

a = list(dodo_input[0])
b = list(dodo_input[1])
c = []

a.sort()
b.sort()

a_num = int(''.join(a))
b_num = int(''.join(b))
c = a_num + b_num
c_list = list(str(c))
c_list.sort()

i = len(c_list)
answer = ""

while True:
    i = i -1
    answer = answer + c_list[i]
    if i == 0:
        break

print(answer)

 
정답은 위와 같습니다. 
리스트와 숫자형, 문자열을 적절히 사용하는것이 포인트입니다. 
 
<해설>
 
dodo_input이라는 변수에 입력을 받습니다. 그 후 ' @ '를 기준으로 문자열을 나누어 숫자를 2개로 쪼갭니다. 
Ex) 445 @ 556 

dodo_input = input()
dodo_input = dodo_input.split(' @ ')

 
sort라는 메서드를 사용하기 위해 list로 바꾸어 변수 a, b에 넣어줍니다.

a = list(dodo_input[0])
b = list(dodo_input[1])
c = []

 
sort를 사용하여 리스트를 오름차순으로 정렬합니다. 

a.sort()
b.sort()

 
리스트를 숫자형으로 다시 바꾼다음에 더하여 c에 넣어줍니다. 

a_num = int(''.join(a))
b_num = int(''.join(b))
c = a_num + b_num

 
c는 숫자형이기 때문에 숫자형 --> 문자형 --> 리스트형으로 바꾼 후 다시 sort시킵니다. (오름차순으로)

c_list = list(str(c))
c_list.sort()

 
c_list는 오름차순이기 때문에 내림차순으로 바꿔줍니다. 
일단 초기값을 지정해주고

i = len(c_list)
answer = ""

 
c_list의 마지막 인덱스부터 시작하여 인덱스 0까지 answer라는 새로운 변수(문자형)에 넣어줍니다. 단 이때 + 연산자를 이용하여 합쳐지도록 합니다. 

while True:
    i = i -1
    answer = answer + c_list[i]
    if i == 0:
        break

 
결국 내림차순으로 바뀐 anwer를 출력합니다. 

print(answer)

 
 
이상입니다. 
 
제 생각엔 이 코드에 비효율적인 부분이 있는것 같습니다. 이보다 더 효율적인 코드를 짤 수 있을거라 생각합니다.
 
좋은 생각 있으시면 댓글로 공유 부탁드립니다. 
 
 

728x90
반응형

댓글