728x90
럭키 스트레이트
구현
public class Main {
private static String N;
private static int left = 0;
private static int right = 0;
public static void main(String[] args) {
input();
solution();
}
private static void input() {
Scanner sc = new Scanner(System.in);
N = sc.nextLine();
}
private static void solution() {
String[] numbers = N.split("");
int middle = numbers.length / 2;
for (int i = 0; i < numbers.length; i++) {
int number = Integer.parseInt(numbers[i]);
if (i < middle) {
left += number;
} else {
right += number;
}
}
if(left == right) {
System.out.println("LUCKY");
} else {
System.out.println("READY");
}
}
}
substring 을 이용할 수도 있다.
int middle = N.length() / 2;
String leftArea = N.substring(0, middle);
String rightArea = N.substring(middle);
int left = 0;
int right = 0;
for (int i = 0; i < a.length(); i++) {
// char 값을 int 로 변환하기 위해 '0' 을 빼준다.
left += leftArea.charAt(i) - '0';
right += rightArea.charAt(i) - '0';
}
문자를 숫자로 변환하기 위해 아스키 코드값을 빼는 것보다 Character.getNumericValue(char)
를 써주는 것이 가독성 측면에서는 더 좋아보인다.
Character.getNumericValue(leftArea.charAt(i));
Character.getNumericValue(rightArea.charAt(i));
또는 람다를 활용할 수있다.
String[] numbers = N.split("");
int middle = N.length() / 2;
int left = IntStream.range(0, middle).map(i -> Integer.parseInt(numbers[i])).sum();
int right = IntStream.range(middle, N.length()).map(i -> Integer.parseInt(numbers[i])).sum();
728x90
'Algorithms > 문제 풀이' 카테고리의 다른 글
[BOJ 16234] 인구 이동 (0) | 2021.12.31 |
---|---|
[BOJ 1715] 카드 정렬하기 (0) | 2021.12.18 |
[BOJ 18352] 특정 거리의 도시 찾기 (0) | 2021.12.18 |
[BOJ 3190] 뱀 (0) | 2021.12.18 |
이것이 코딩 테스트다 : 모험가 길드 (0) | 2021.12.18 |