[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바이트로 작성한 사람도 보이지만 솔직히 내가 그런걸 생각해 낼 수 없을거 같다.
(쨌든 시간상으론 최단시간에 속하긴 하니까 별 문제는 없겠지...)
'백준 > Python' 카테고리의 다른 글
[Python] 백준 2555 (생일) (0) | 2019.07.02 |
---|---|
[Python] 백준 2869 (달팽이는 올라가고 싶다) (3) | 2019.06.11 |
[Python] 백준 1032 (명령 프롬프트) (0) | 2019.06.11 |
[Python] 백준 2751 (수 정렬하기2) (0) | 2019.06.09 |