링크
https://www.acmicpc.net/problem/18406
18406번: 럭키 스트레이트
첫째 줄에 점수 N이 정수로 주어진다. (10 ≤ N ≤ 99,999,999) 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어진다.
www.acmicpc.net
문제


풀이
* 입력 받는 자릿수는 짝수 형태로만 주어진다.
짝수라는 말은 전체 수가 짝수가 아니라 자릿수가 짝수 입니다.
첫 번째 예제
123402를 입력 받았을 때
123402 의 자릿수는 6 이라서 짝수.

입력 받은 자릿수를 반반 나누어 합산.
*절반 왼쪽

1 + 2 + 3 = 6
*절반 오른쪽

4 + 0 + 2 = 6
왼쪽과 오른쪽 합이 둘 다 6이므로 결과는 같다.
결과가 같으면 "LUCKY" 라는 문자열 반환.
두 번째 예제

7755 의 자리수는 4 라서 짝수
입력 받은 자릿수를 반반 나누어 합산.
*절반 왼쪽

7 + 7 = 14
*절반 오른쪽

5 + 5 = 10
왼쪽 합 : 14
오른쪽 합 : 10
14 와 10은 같지 않음.
왼쪽 합과 오른쪽 합이 같지 않으면 "READY" 라는 문자열 반환.
받은 숫자 자릿수를 절반씩 나누어서 합산을 한 뒤 비교해보는 방식으로 풀었습니다.
위의 로직 구현
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
/**
* 럭키 스트레이트
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int count = str.length();
int left = 0;
int right = 0;
for (int i = 0; i < count/2; ++i) {
left += (str.charAt(i));
}
for (int i = count/2; i < count; ++i) {
right += (str.charAt(i));
}
System.out.println((left == right ? "LUCKY":"READY"));
}
}

후기
* 난이도 (5점 만점)
5 : 풀 줄 알면 기업 코딩테스트는 문제 없음.
4 : 평균적인 기업 코딩테스트의 중간 이상.
3 : 평균적인 기업 코딩테스트의 쉬운 문제 .
2 : 알고리즘 문제를 연습하고 있다면 풀 수 있는 문제.
1 : 시간이 오래 걸리지 않고, 누구나 풀 수 있는 문제.
난이도는 매우 쉬운 편이었으며 for문을 사용할 때 길이를 지정해서 사용할 줄 알면 어렵지 않다.
'백준알고리즘 > 문자열' 카테고리의 다른 글
[백준] 2675 문자열 반복 - JAVA 자바 (0) | 2021.08.11 |
---|---|
[백준] 11720 숫자의 합 - JAVA 자바 (0) | 2021.08.11 |
[백준] 10809 알파벳 찾기 - JAVA 자바 (0) | 2021.08.10 |