[첫번째 생각]

 

1번은 2초

2번은 3초

3번은 4초

즉, 번호에 +1만하면 초가 되므로 고려하지 않아도됨

1번일 때, ABC

2번일 때, DEF

...문자와 숫자를 매핑시키려면 어떤 방법이 좋을까?

 

[문제점 발생]

switch문을 생각하여 매핑시키자

 

[두번째 생각]

import java.util.Scanner;

 

public class Main {

 

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

String input = sc.nextLine();

char arr[] = input.toCharArray();

 

int sum = 0;

 

for(char i: arr) {

sum += Dial(i) + 1;

}

           

System.out.println(sum);

}

 

public static int Dial(char input) {

switch(input) {

case'A': case 'B':case 'C':

return 2;

case'D': case 'E':case 'F':

return 3;

case'G': case 'H':case 'I':

return 4;

case'J': case 'K':case 'L':

return 5;

case'M': case 'N':case 'O':

return 6;

case'P': case 'Q':case 'R':case 'S':

return 7;

case'T': case 'U':case 'V':

return 8;

case'W': case 'X':case 'Y':case 'Z':

return 9;

default: return -1;

}

}

}

 

[훨씬 쉬운 코드]

public class BOJ5622 {

	public static void main(String[] args) {
		
		final int num[] = {3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,10};		
		
		Scanner sc = new Scanner(System.in);
		
		String str = sc.nextLine();
		
		int sum = 0;
		for(int i = 0 ; i < str.length() ; i++)
			sum += num[str.charAt(i)-65];
		
		System.out.println(sum);
	}
}

ABC인 경우에는 1, DEF인 경우에는 2 처럼 숫자를 기준으로 묶었었다

이 코드는 A(=0)인 경우는 3 B(=1)인 경우도 3 처럼... 각 알파벳을 기준으로 세웠다.

그리고 각 값을 넣어주었다.

 

관점을 바꿀 줄도 알자.

 

[결론]

 

+ Recent posts