알고리즘/이취코

[이취코] 알고리즘 유형별 기출문제: 구현 - 7. 럭키 스트레이트 (Python)

한비 2023. 7. 3. 16:19
반응형

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인지 아닌지 검사해 출력하는 방법을 썼다. 전체적인 로직은 동일하다.

반응형