해야겠지?

공부/파이썬

[Python] 엘리스코딩 파이썬 기초2 실력 확인 테스트 정답 (4)

jinyong 2023. 5. 16. 22:12
728x90
반응형

엘리스코딩 파이썬 기초2 실력 확인 테스트 4번 문제 정답

<문제>

정렬 덧셈 - 도도새는 10진법에서 사용 가능한 새로운 연산자 @ 을 만들어 사용해보려 합니다.

연산자 @ 은 연산자 앞뒤의 피연산자를 자릿수별로 오름차순 정렬해 더한 결과를 자릿수별로 내림차순 정렬합니다.

예를 들어 412 @ 524 를 연산하면

 

1) 412를 자릿수별로 오름차순 정렬합니다: 124

2) 524를 자릿수별로 오름차순 정렬합니다: 245

3) 과정 1과 2에서 정렬한 두 수의 합을 구합니다: 369

4) 369를 자릿수별로 내림차순 정렬합니다: 963

 

결과는 963이 됩니다.

지시사항을 참고하여 프로그램을 작성하여 도도새의 테스트를 도와주세요.

 

엘리스코딩 파이썬 기초2 실력 확인 테스트 문제4

 

1. 저는 문제를 보자마자 열받아서 꺼버렸는데 침착하게 문제를 이해해봅니다.

2. "abc @ def" 를 input() 으로 입력받은 다음, " @ " 를 기준으로 .split() 해서 두개의 문자열을 리스트 형식으로 받는다.

3. 두 문자열을 각각의 변수에 넣어준다. (type: list)

4. .sort() 메서드를 이용해 오름차순 정렬

 ※ 숫자(int) / 문자열(str)로 처리할 부분을 나눠서 생각해야 하고, 상황에 따라 int ↔ str, list ↔ str 변환시켜줍니다.

5. 오름차순 정렬한 리스트형 자료형을 합치고(join) 숫자로 바꿔준다(int).

6. 아직까지 리스트 내림차순 정렬을 안배웠으므로 먼저 오름차순으로 정렬한 후 새로운 변수에 역순으로 담아준다.

 ※ 더 나은 방법이 있을 수 있습니다.

 

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

a = list(dodo[0])
b = list(dodo[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=0
ans=[]
for i in range(len(c_list)):
    ans.append(c_list[len(c_list)-i-1])
    i = i+1

ans_num = int(''.join(ans))

print(ans_num)

 

728x90
반응형