반응형
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
반응형
'기타등등' 카테고리의 다른 글
[Phython] 엘리스 코딩_파이썬 기초2 실력 확인 문제 정답! ⑤ 당근 탐지기 (해설 있음) (0) | 2023.04.18 |
---|---|
[Phython] 엘리스 코딩_파이썬 기초2 실력 확인 문제 정답! ③ 평균 구하기(단, 소수점 버림) (0) | 2023.04.18 |
[Phython] 엘리스 코딩_파이썬 기초2 실력 확인 문제 정답! ② 오류수정 (0) | 2023.04.18 |
[Phython] 엘리스 코딩_파이썬 기초2 실력 확인 문제 정답! ① 암호해독(vigerere.py사용) (4) | 2023.04.18 |
약 9개월 동안 블로그 광고를 넣었을 때 얼마 벌었게요...? (블로그 중간점검 / 방문자수&수익 개봉박두) (4) | 2022.06.29 |
댓글