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
'알고리즘 > 이것이 코딩테스트다' 카테고리의 다른 글
09_문자열 압축 (0) | 2023.02.08 |
---|---|
08_문자열 재정렬 (0) | 2023.02.07 |
06_무지의 먹방 라이브 (0) | 2023.02.04 |
05_볼링공 고르기 (0) | 2023.02.01 |
04_만들 수 없는 금액 (0) | 2023.01.27 |