반응형
728x90
반응형
문제
https://www.acmicpc.net/problem/18406
풀이코드
package com.algorithm._01_그리디_구현;
import java.util.Scanner;
import java.util.stream.IntStream;
/**
* @Date 2022/07/05
* @URL https://www.acmicpc.net/problem/18406
*/
public class A18406_럭키_스트레이트 {
public static void main(String[] args) {
A18406_럭키_스트레이트 main = new A18406_럭키_스트레이트();
System.out.println(main.solution());
}
public String solution() {
Scanner sc = new Scanner(System.in);
String point = sc.next();
int size = point.length();
/* 왼쪽 합 */
int leftSum = IntStream.range(0, size / 2)
.map(i -> (int) point.charAt(i)).sum();
/* 오른쪽 합 */
int rightSum = IntStream.range(size / 2, size)
.map(i -> (int) point.charAt(i)).sum();
return leftSum == rightSum ? "LUCKY" : "READY";
}
}
다른 풀이 보기
https://www.acmicpc.net/source/44864530
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
char[] arr = s.toCharArray();
String result = "READY";
int a = 0;
int b = 0;
for (int i = 0; i < arr.length / 2; i++) {
a += arr[i] - '0';
b += arr[arr.length - 1 - i] - '0';
}
if (a == b) {
result = "LUCKY";
}
System.out.println(result);
}
}
1) 한번의 반복문으로 왼쪽 합과 오른쪽 합을 동시에 구하는 로직이 인상적이다.
for (int i = 0; i < arr.length / 2; i++) {
a += arr[i] - '0';
b += arr[arr.length - 1 - i] - '0';
}
arr = [1, 2, 3, 4, 0, 2]
i = 0
- a = 1 (arr[0]), b = 2 (arr[5])
첫번째 원소와 마지막 원소를 각 a, b 변수에 더한다.
이렇게 arr.length / 2 만큼 반복문을 수행하여 a는 왼쪽부터, b는 오른쪽부터 계산하여 한번에 구할 수 있다.
반응형
'Algorithm > Problem Solving' 카테고리의 다른 글
[JAVA-알고리즘 문제풀이] 대소문자 변환 (0) | 2022.09.06 |
---|---|
[Baekjoon 7568번] 덩치 문제 (with 자바) (0) | 2022.07.31 |
[Baekjoon 10816번] 숫자 카드 2 문제 (with 자바) (0) | 2022.05.30 |
[Baekjoon 1541번] 잃어버린 괄호 문제 (with 자바) (0) | 2022.05.29 |
[Baekjoon 17298번] 오큰수 문제 (with 자바) (0) | 2022.05.28 |