PS/BOJ
백준 2037 문자메시지 / JAVA
얍연구소장
2023. 4. 11. 16:32
https://www.acmicpc.net/problem/2037
2037번: 문자메시지
첫째 줄에 p와 w가 주어진다. (1 ≤ p, w ≤ 1,000) p는 버튼을 한번 누르는데 걸리는 시간이고, w는 AC와 같은, 같은 숫자인 문자를 연속으로 찍기 위해 기다리는 시간을 의미한다. 그리고 둘째 줄에는
www.acmicpc.net
>풀이
import java.util.*;
import java.io.*;
public class Main {
static char[][] ph = {
{},
{},{'A','B','C'},{'D','E','F'},
{'G','H','I'},{'J','K','L'},{'M','N','O'},
{'P','Q','R','S'},{'T','U','V'},{'W','X','Y','Z'}
};
static int result = 0;
static int btnNum = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int p = Integer.parseInt(st.nextToken());
int w = Integer.parseInt(st.nextToken());
char[] arr = br.readLine().toCharArray();
for(char alphabet : arr) {
if(alphabet == ' ') {
result += p;
btnNum = 1;
} else {
chk(alphabet, p, w);
}
}
System.out.println(result);
}
public static void chk(char alphabet, int p, int w) {
for(int i = 2; i < ph.length; i++) {
int sec = 0;
for(int j = 0; j < ph[i].length; j++) {
sec += p;
if(btnNum == i) {
sec += w;
btnNum = 0;
}
if(alphabet == ph[i][j]) {
result += sec;
btnNum = i;
return;
}
}
}
}
}