반응형
럭키 스트레이트
난이도 ●○○ | 풀이 시간 20분 | 시간 제한 1초 | 메모리 제한 256MB | 기출 핵심 유형
게임의 아웃복서 캐릭터는 필살기인 '럭키 스트레이트' 기술이 있습니다. 이 기술은 매우 강력한 대신에 게임 내에서 점수가 특정 조건을 만족할 때만 사용할 수 있습니다.
특정 조건이란 현재 캐릭터의 점수를 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 |
요점
- 요구하는 바와 같이 왼쪽과 오른쪽을 구분하여 값을 비교한다.
소스 코드
import java.util.*;
public class Main
{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String numStr = scan.next();
int summary = 0;
for(int i = 0; i < numStr.length(); i++){
if(i < numStr.length() / 2){
summary += numStr.charAt(i) - '0';;
} else {
summary -= numStr.charAt(i) - '0';;
}
}
System.out.println(summary == 0 ? "LUCKY" : "READY");
}
}
문제 풀이 후기
문제에서 요구하는 바를 그대로 구현하면 되는 복잡하지 않은 문제라 쉽게 해결했다. 다만 처음에는 변수 2개를 사용해서 더해진 값을 비교했는데 나동빈님의 풀이를 보니 왼쪽은 더하기 오른쪽은 마이너스로해서 결과가 0이면 같은 값으로 보는 방법을 사용하시길래 훨씬 효율적인 것 같아 나도 변경했다.
참고서적 : 이것이 취업을 위한 코딩 테스트다 with 파이썬 by 나동빈
반응형