7. 럭키 스트레이트
문제
- 게임의 아웃 복서 캐릭터는 필살기인 “럭키 스트레이트” 기술이 있다. 이 기술은 매우 강력한 대신 게임 내에서 점수가 특정 조건을 만족할 때만 사용할 수 있다.
- 특정 조건이란 현재 캐릭터의 점수를 N이라고 할 때 자릿수를 기준으로 점수 N을 반으로 나누어 왼쪽 부분의 각 자릿수의 합과 오른쪽 부분의 각 자릿수의 합을 더한 값이 동일한 상황을 말한다.
- 예를 들어 현재 점수가 123,402라면 왼쪽 부분의 각 자릿수의 합은 1+2+3, 오른쪽 부분의 각 자릿수의 합은 4+0+2이므로 두 합이 6으로 동일하여 럭키 스트레이트를 사용할 수 있다.
- 현재 점수 N이 주어졌을 때 럭키 스트레이트를 사용할 수 있는 상태인지 아닌지 알려주는 프로그램을 작성하시오.
조건
- 입력
- 첫째 줄에 점수 N이 정수로 주어짐 (10≤N≤99,999,999)
- 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어짐. 예를 들어 자릿수가 5인 12,345와 같은 수는 입력으로 들어오지 않음
- 출력
- 첫째 줄에 럭키 스트레이트를 사용할 수 있다면 “LUCKY”를, 사용할 수 없다면 “READY”를 출력
예시
123402 → LUCKY
7755 → READY
풀이
주어진 수를 문자열로 입력 받고 앞/뒤 절반을 각각 for문+형변환을 통해 더하여 두 합이 동일한지 아닌지 비교하고 상황에 맞게 출력
시간 복잡도: O(n)
공간 복잡도: O(n)
# 구현 - 1. 럭키 스트레이트
import sys
input = sys.stdin.readline
N = input().rstrip()
half_len = int(len(N)/2)
sum1 = sum([int(i) for i in N[:half_len]])
sum2 = sum([int(i) for i in N[half_len:]])
if sum1 == sum2:
print("LUCKY")
else:
print("READY")
참고로 책에서는 합을 저장할 변수를 하나만 두고 왼쪽 합에서 오른쪽 합을 뺀 결과가 0인지 아닌지 검사해 출력하는 방법을 썼다. 전체적인 로직은 동일하다.
'알고리즘 > 이취코' 카테고리의 다른 글
[이취코] 알고리즘 유형별 기출문제: 구현 - 8. 문자열 재정렬 (Python) (0) | 2023.07.03 |
---|---|
[이취코] 알고리즘 유형별 기출문제: 그리디 - 6. 무지의 먹방 라이브 (Python) (0) | 2023.07.02 |
[이취코] 알고리즘 유형별 기출문제: 그리디 - 5. 볼링공 고르기 (Python) (0) | 2023.07.02 |
[이취코] 알고리즘 유형별 기출문제: 그리디 - 4. 만들 수 없는 금액 (Python) (0) | 2023.06.29 |
[이취코] 알고리즘 유형별 기출문제: 그리디 - 3. 문자열 뒤집기 (Python) (0) | 2023.06.29 |