[백준/Java] 럭키 스트레이트

seb Incode·2022년 5월 29일
0
post-thumbnail

문제 설명

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

특정 조건이란 현재 캐릭터의 점수를 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"라는 단어를 출력한다.

풀이

String으로 입력 받은 숫자를 char[]로 변환한 후,
배열 길이 절반 왼쪽 숫자들과 오른쪽 숫자들의 아스키코드값을 각각 저장한다.
굳이 int형으로 변환하지 않아도 아스코드 값도 숫자마다 고유하기 때문에 문제가 없다.

소스코드

import java.util.*;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        String score = sc.nextLine();   //숫자 String으로 입력 받기
        
        char[] nums = score.toCharArray();  //String -> char[] 변환
        
        int left = 0;   //왼쪽 숫자 합 저장할 변수
        int right = 0;  //오른쪽 숫자 합 저장할 변수
        
        //배열 전체 순회
        for(int i=0;i<nums.length;i++){
            //배열 왼쪽 숫자면
            if(i < nums.length/2){
                left += nums[i];    //값 저장(아스키코드 값이어도 상관없음)
            }
            //배열 오른쪽 숫자면
            else{
                right += nums[i];
            }
        }
        //값이 같은지 비교
        if(left == right){
            System.out.println("LUCKY");
        }
        else{
            System.out.println("READY");
        }
        
        
       
    }
}

결과

0개의 댓글