[Python] 백준 15873 (공백 없는 A+B)

2019. 6. 11. 00:07백준/Python

*문제에 대한 내 생각

 문제자체는 어렵지 않았다. A와 B를 구분해서 더해주기만 하면 되는 문제였다.

 중점은 A 혹은 B가 10인 경우였다.

 (둘 다 10이면 매우 간단)

 

 

*문제 풀이

-아이디어

 위에서 언급했든 중점은 둘 중 하나가 10인 경우다.

 따라서 경우를 나눌 필요가 있었다.

 먼저 비교적 조건문을 작성하기 쉬운 경우 두가지(둘 다 10이 아닌 경우와 둘 다 10인 경우)를

 문자열의 길이를 통해 판단했다(둘 다 10이 아니면 문자열의 길이가 2, 둘 다 10이면 문자열의 길이가 4).

 남은 부분은 둘 중 하나가 10일테니, 0의 위치로 다시 if문을 사용해 경우를 나누었다.

 참고로 문제의 조건에서 필요없는 0은 붙지 않는다고 제한했기 때문에 0의 위치를 기준으로 문제없다.

 

-코드

 

n = input()

if len(n) == 2:		#둘 다 10이 아님
    print(sum(map(int, [n[0], n[1]])))
elif len(n) == 4:	#둘 다 10
    print(20)
else:			#둘 중 하나가 10
    if int(n[-1]) == 0:		#문자열의 맨 마지막이 0, 즉 B가 10이다
        print(int(n[0]) + 10)
    else:			#중간이 0, 즉 A가 10이다
        print(int(n[-1]) + 10)

 

 

 

*결과

 200바이트에 56ms이 나왔다.

 순위를 보면 39바이트로 작성한 사람도 보이지만 솔직히 내가 그런걸 생각해 낼 수 없을거 같다.

 (쨌든 시간상으론 최단시간에 속하긴 하니까 별 문제는 없겠지...)