perry05

[백준] 5622 - 다이얼(JAVA) 본문

문제풀이 기록/JAVA

[백준] 5622 - 다이얼(JAVA)

perry05 2022. 11. 28. 17:06

[백준] 단계별로 풀어보기 - 문자열

https://www.acmicpc.net/problem/5622

 

5622번: 다이얼

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.

www.acmicpc.net

 

> 문제

 

> 풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
	public static int[] convertToTime(String s) {
		char A = 'A';
		int l = s.length();
		int[] result = new int[l];
		
		for(int i = 0; i < l; i++) {
			// i번째 문자를 가져와서
			char c = s.charAt(i);
			// Z이면 -1
			if(c == 'Z')
				c--;
			// S보다 작으면 -1
			if(c >= 'S')
				c--;
			// A를 빼고 3으로 나누고 2를 더해 숫자를 뽑은 후 1을 더해 번호를 누르는 시간을 구한다.
			result[i] = ((c-A) / 3 + 2) + 1;
		}
		
		return result;
	}
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int[] arr;
		int time = 0;
		
		// 입력 받아서 각 문자에 해당하는 숫자를 누르는 시간을 구한다
		arr = convertToTime(br.readLine());
		br.close();
		
		// 구한 시간을 다 더한다
		for(int item : arr)
			time = time + item;
		
		System.out.println(time);
	}
}

숫자 7과 9를 빼면 다 세글자씩이라 3으로 나눈 몫으로 숫자를 표현하여 풀었다. 9의 마지막인 Z이면  -1, S부터 Z까지의 문자가 나오면 -1을 하여 3으로 나눈 후 2를 더했을 때 9가 되도록 만들었고, 1을 더해 해당 숫자를 누르는데 필요한 시간을 구했다.

Comments