문제
항상 짝수자릿수에 대해서 반으로 나눠서 왼쪽의 합과 오른쪽의 합이 같으면 "Lucky", 아니면 "Ready" 출력하라.
유형
요구한 것을 그대로 구현하면 되는 문제이다.
코드
def solution(input):
result1 = 0
result2 = 0
mid_index = int(len(input)/2)-1
for i in range(len(input)):
if i <= mid_index:
result1 += int(input[i])
continue
result2 += int(input[i])
if result1 == result2:
print("LUCKY")
else:
print("READY")
input1 = "123402"
input2 = "7755"
solution(input1)
solution(input2)
해결
1. 입력을 스트링으로 저장한다.
2. 왼쪽 합, 오른쪽 합을 담을 result1, result2를 준비한다.
3. 기준이 될 중간인덱스를 구한다.
4. 중간 인덱스를 기준으로 result1, result2를 구한다.
5. 결과 출력
시공간 복잡도
기본적으로 복잡도는 O(N)이다. for문을 통해 한번에 구하므로 그렇다.
그래서 최대 N = 99999999로 해봤자 8번의 연산을 한다. 공간복잡도 또한 딱히 고려할 요소가 없다.