728x90
반응형
문제
https://www.acmicpc.net/problem/18238
해설
이 문제는 왼쪽 / 오른쪽 중 빠른 쪽의 값을 구하면 된다.
다양한 방법으로 풀 수 있지만 이번에는 아스키 코드 값을 사용해서 풀어보았다.
(A ~ Z를 리스트에 담아놓고 푸는 방법을 사용할 수도 있다)
원판을 왼쪽으로 돌릴지, 오른쪽으로 돌릴지에 따라 아스키코드 값을 계산해주면 된다.
주의할 점은,
계산한 값이 음수가 되면 알파벳 개수인 26을 더해줘야 제대로 된 값을 얻을 수 있다는 것이다.
코드
-파이썬
#백준 18238(ZOAC 2)
word = list(input()) #문자열
start = 'A'
time = 0
for i in word:
left = ord(i) - ord(start) #원판 왼쪽으로 돌리기
right = ord(start) - ord(i) #오른쪽으로 돌리기
if left < 0:
left += 26
elif right < 0:
right += 26
time += min(left, right)
start = i
print(time)
-자바
//백준 18238(ZOAC 2)
import java.util.*;
import java.io.*;
public class Boj_18238 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String word = br.readLine();
char start = 'A';
int time = 0;
for(int i = 0; i < word.length(); i++) {
char c = word.charAt(i);
int temp = Math.abs(c - start);
time += Math.min(temp, 26 - temp); //왼쪽으로 돌리는 것, 오른쪽으로 돌리는 것 중 최소
start = c;
}
bw.write(time + "\n");
bw.flush();
br.close();
bw.close();
}
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[파이썬, 자바] BOJ_2752(세수정렬) (0) | 2021.02.08 |
---|---|
[파이썬, 자바] BOJ_11256(사탕) (0) | 2021.02.03 |
[파이썬, 자바] BOJ_12782(비트 우정지수) (0) | 2021.02.01 |
[파이썬, 자바] BOJ_14916(거스름돈) (0) | 2021.01.29 |
[파이썬, 자바] BOJ_1439(뒤집기) (0) | 2021.01.28 |