1 분 소요

1. 문제

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

  • 문자열 문제
// 문제
어떤 게임의 아웃복서 캐릭터에게는 럭키 스트레이트라는 기술이 존재한다. 
 기술은 매우 강력한 대신에 항상 사용할 수는 없으며, 
현재 게임 내에서 점수가 특정 조건을 만족할 때만 사용할  있다.

특정 조건이란 현재 캐릭터의 점수를 N이라고   
점수 N을 자릿수를 기준으로 반으로 나누어 
왼쪽 부분의  자릿수의 합과 
오른쪽 부분의  자릿수의 합을 더한 값이 동일한 상황을 의미한다. 
예를 들어 현재 점수가 123,402라면 
왼쪽 부분의  자릿수의 합은 1+2+3, 
오른쪽 부분의  자릿수의 합은 4+0+2이므로 
 합이 6으로 동일하여 럭키 스트레이트를 사용할  있다.

현재 점수 N이 주어졌을 , 
럭키 스트레이트를 사용할  있는 상태인지 아닌지를 알려주는 프로그램을 작성하시오. 
럭키 스트레이트를 사용할  있다면 "LUCKY", 
사용할  없다면 "READY"라는 단어를 출력한다. 
또한 점수 N의 자릿수는 항상 짝수 형태로만 주어진다. 
예를 들어 자릿수가 5 12,345 같은 수는 입력으로 들어오지 않는다.

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

// 출력
첫째 줄에 럭키 스트레이트를 사용할  있다면 "LUCKY", 
사용할  없다면 "READY"라는 단어를 출력한다.

// 예제 입력 1 
123402

// 예제 출력 1 
LUCKY

// 예제 입력 2 
7755

// 예제 출력 2 
READY


2. 핵심 아이디어

  • 기준점을 잡아 반복문을 통해 앞쪽 합 저장
  • 기준점으로부터 마지막까지 뒷부분의 합 저장
  • 합 같은지 비교


3. Python 문제풀이

import sys
input = sys.stdin.readline

n = input().rstrip()
num = len(n) // 2
left = 0
right = 0

for i in range(num) :
  left += int(n[i])

for i in range(num, len(n)) :
  right += int(n[i])

if left == right :
  print('LUCKY')
else :
  print('READY')


4. Java 문제풀이


댓글남기기