새소식

⌨️ Algorithms/백준

[Python] 백준 18406번_럭키 스트레이트

2023. 3. 2. 22:17

  • -

https://www.acmicpc.net/problem/18406

 

18406번: 럭키 스트레이트

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

www.acmicpc.net

 

  • 어떤 게임의 아웃복서 캐릭터에게는 럭키 스트레이트라는 기술이 존재
  • 현재 게임 내에서 점수가 특정 조건을 만족할 때만 사용 가능
  • 특정 조건이란 현재 캐릭터의 점수를 N이라고 할 때 점수 N을 자릿수를 기준으로 반으로 나누어 왼쪽 부분의 각 자릿수의 합과 오른쪽 부분의 각 자릿수의 합을 더한 값이 동일한 상황
  • 예를 들어 현재 점수가 123,402라면
    • 왼쪽 부분의 각 자릿수의 합은 1+2+3, 오른쪽 부분의 각 자릿수의 합은 4+0+2
    • 두 합이 6으로 동일하여 럭키 스트레이트를 사용할 수 있음
  • 현재 점수 N이 주어졌을 때, 럭키 스트레이트를 사용할 수 있는 상태인지 아닌지를 구하기
  • 럭키 스트레이트를 사용할 수 있다면 "LUCKY"를, 사용할 수 없다면 "READY"라는 단어를 출력
  • 점수 N의 자릿수는 항상 짝수 형태로만 주어짐
  • 입력
    • 첫째 줄에 점수 N이 정수로 주어짐 (10 ≤ N ≤ 99,999,999)
    • 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어짐
  • 출력
    • 첫째 줄에 럭키 스트레이트를 사용할 수 있다면 "LUCKY"를, 사용할 수 없다면 "READY"라는 단어를 출력
  • 시간 제한: 1초
  • 메모리 제한: 256 MB

 

"""
입출력 예시)

(예제 입력 1) 
123402 -> LUCKY

(예제 입력 2)
7755 -> READY
"""

 

 

## 의사코드 ##

# N의 길이는 항상 짝수
# 점수 N을 자릿수를 기준으로 반으로 나누어 왼쪽 자릿수의 합과 오른쪽 자릿수의 합 비교
# -> mid 인덱스로 슬라이싱 

# mid = len(n) // 2 # 점수 n의 자릿수 기준 절반
# left = n[:mid] # 처음부터 절반까지
# right = n[mid:] # 절반부터 마지막까지

# 왼쪽 자릿수의 합과 오른쪽 자릿수의 합
#     1) 각 자릿수가 들어간 리스트로 생성
#         list(left)
#     2) 리스트의 각 원소를 int로 변환
#         map(int, list(left))
#     3) 각 자릿수의 합 구하기
#         sum(map(int, list(left)))

 

 

 

 

n = str(input())

# 점수 n의 자릿수 기준 절반의 인덱스
mid = len(n) // 2 

# 왼쪽 자릿수의 합
left = sum(map(int, list(n[:mid]))) 
# 오른쪽 자릿수의 합
right = sum(map(int, list(n[mid:]))) 

# 럭키 스트레이트를 사용할 수 있다면 "LUCKY", 사용할 수 없다면 "READY"
if left == right:
    print('LUCKY')
else:
    print('READY')

 

-> sum() 하기 전에 문자열로 되어있는 각 자릿수를 int로 바꿔줘야 함

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!