```
백준 18238번 ZOAC 2 JAVA 구현해보기
```

이번 글을 통해 배워갈 내용
- 백준 18238번 풀이
https://www.acmicpc.net/problem/18238
18238번: ZOAC 2
2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해
www.acmicpc.net
백준 18238번 ZOAC2는
난이도 브론즈 등급의 문제로서
A부터 Z까지 순서대로 쓰여있는 원판을
왼쪽 혹은 오른쪽으로 돌릴수있고
한 칸 돌릴 때마다 1초 소요되고
첫 문자가 A일 때
문자열이 주어지면 해당되는 문자열을 전부 원판을 돌려서 순서대로 출력하려면
몇 초가 걸리는지 찾아주면 되는 문제입니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
요즘 드는 생각이 다루기 쉽고 짧으며 유지보수가 쉬운 코드라면
조금 성능이 떨어져도 될까?입니다
아래와 같이 max min 중 하나만 써도 되는 것을 굳이 각각 따로 한 것은 그런 맥락입니다.
오른쪽에 있는 알파벳 왼쪽에 있는 알파벳을 구하고
작은 수 기준 왼쪽으로부터 찾을 수 있는 거리,
오른쪽으로부터 찾을 수 있는 거리를 구해주고
최솟값을 찾아서 더해주고 출력합니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) throws IOException {
// 입력
final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
final String input = "A" + br.readLine();
// 출력
final int result = IntStream.range(1, input.length()).map(i -> {
int rhs = Math.max(input.charAt(i), input.charAt(i - 1));
int lhs = Math.min(input.charAt(i), input.charAt(i - 1));
final int lDis = rhs - lhs;
final int rDis = 'Z' - rhs + lhs - 'A' + 1;
return Math.min(lDis, rDis);
}).sum();
System.out.print(result);
}
}
// https://codemasterkimc.tistory.com
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
728x90
'Java > Java 알고리즘' 카테고리의 다른 글
| 백준 17249번 태보태보 총난타 JAVA 구현해보기 (0) | 2022.08.28 |
|---|---|
| 백준 3028번 창영마을 JAVA 구현해보기 (0) | 2022.08.28 |
| 백준 21734번 SMUPC의 등장 JAVA 구현해보기 (0) | 2022.08.28 |
| 백준 14652번 나는 행복합니다~ JAVA 구현해보기 (0) | 2022.08.28 |
| 백준 13277번 큰 수 곱셈 JAVA 구현해보기 (0) | 2022.08.28 |