곽로그

[백준 5622, 자바] 다이얼 본문

알고리즘/백준

[백준 5622, 자바] 다이얼

일도이동 2020. 3. 15. 01:52
반응형

문제

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

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

접근방법

문자 숫자 소요시간(초)
ABC 2 3
DEF 3 4
GHI 4 5
JKL 5 6
MNO 6 7
PQRS 7 8
TUV 8 9
WXYZ 9 10

 우선 위의 표를 만들어봤다. 소요시간은 숫자+1 이라는 관계가 있다. 그럼 이제 문자와 숫자에 대한 대응관계를 생각해주면 된다. 그런데 문자가 3개인 경우도 있고 4개인 경우도 있어서 이걸 일반화하기는 어려웠다. 그래서 그냥 각 문자다마 일대일 대응으로 접근했다. 

 

 number라는 크기가 26인 배열에 2,2,2,3,3,3,4,4,4~이렇게 초기화를 하고 입력된 문자가 T이면 T-A를 구해서 해당 T-A의 인덱스에 있는 숫자를 가져온다. 거기에 +1 을 하면 소요시간을 구할 수 있다. 

 

import java.util.Scanner;

public class Main {
	public static int[] number = {2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};
	public static void main(String[] args) {
		Scanner in =new Scanner(System.in);
		String dial = in.next();
		int totalSecond = 0;
		
		for(int i=0;i<dial.length();i++) {
			char alpabet = dial.charAt(i);
			totalSecond += (number[alpabet-'A']+1);
		}
		System.out.println(totalSecond);
		in.close();
	}
}
반응형
Comments