알고리즘/이것이 코딩테스트다

07_럭키 스트레이트

happenundo 2023. 2. 6. 14:11
728x90
 

18406번: 럭키 스트레이트

첫째 줄에 점수 N이 정수로 주어진다. (10 ≤ N ≤ 99,999,999) 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어진다.

www.acmicpc.net

 

시간 제한이 1초였고, N도 99,999,999이하인데

어차피 반으로 나눠서 더하므로 sum 함수를 이용해서 더해주면 된다.

 

내 풀이

# Q_07_럭키 스트레이트
arr = list(map(int, input()))

length = len(arr)

if sum(arr[:length // 2]) == sum(arr[length // 2:]):
    print("LUCKY")
else:
    print("READY")

 

풀이 코드

# Q_07_럭키 스트레이트
n = input()
length = len(n)
summary = 0

# 왼쪽 부분의 자릿수 합 더하기
for i in range(length // 2):
    summary += int(n[i])

# 오른쪽 부분의 자릿수 합 빼기
for i in range(length // 2, length):
    summary -= int(n[i])


# 왼쪽 부분과 오른쪽 부분의 자릿수 합이 동일한지 검사
if summary == 0:
    print("LUCKY")
else:
    print("READY")

같은 로직을 사용했지만 참고할 점이 있다.

 

예를 들어 이 문제처럼 2종류의 합을 비교해서 같은지 다른지 확인하는 문제가 있다면,

변수 2개를 따로 할당해서 ==를 통해 같은지 다른지 판단해도 되지만, 

변수 1개만 할당해서 더한 후에, 다른 로직에서는 빼줘서 0이 되는 경우에는 같다고 판단할 수도 있다.

 

728x90