반응형
-해법
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
char num[][] = {{' ',' ',' '},{' ',' ',' '},{'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'}
}; // 다이얼에 맞는 알파벳 저장 2차원 배열
String alph = in.next(); // 알파벳 입력
int time = 0; // 걸리는 시간
for(int i=2;i<num.length;i++) { // 2~9까지 알파벳이 존재하므로
for(int j=0;j<num[i].length;j++) { // 해당 행에 마지막까지 탐색
for(int k=0;k<alph.length();k++) { // 입력받은 알파벳 탐색
if(alph.charAt(k) == num[i][j]) { // 입력받은 알파벳 한 개와 배열의 값이 일치하는 경우
time+= (i+1); // 다이얼 번호마다 +1초씩 걸리므로 +1한 후 시간에 누적
}
}
}
}
System.out.println(time); // 시간 출력
in.close();
}
}
이전에도 이 문제를 풀어봐서 풀이를 확인해보니 무수한 조건문의 향연이었더라.. ㅋㅋㅋㅋ 좀 더 깔끔하게 풀어보기 위해서 문제에서 제공하는 정보를 토대로 2차원 배열에 저장한 뒤, 탐색을 통해 시간 연산을 진행하였더니 더 깔끔해졌다.
참고로 아래는 이전에 풀었던 풀이이다... ㅋㅋㅋ
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String word = sc.next();
String c_word = "";
int time =0;
for(int j = 0;j<word.length();j++){
if('A'<= word.charAt(j)&& word.charAt(j)<='C'){
c_word = c_word+ String.valueOf(2);
}else if('D'<= word.charAt(j)&& word.charAt(j)<='F'){
c_word = c_word+ String.valueOf(3);
}else if('G'<= word.charAt(j)&& word.charAt(j)<='I'){
c_word = c_word+ String.valueOf(4);
}else if('J'<= word.charAt(j)&& word.charAt(j)<='L'){
c_word = c_word+ String.valueOf(5);
}else if('M'<= word.charAt(j)&& word.charAt(j)<='O'){
c_word = c_word+ String.valueOf(6);
}else if('P'<= word.charAt(j)&& word.charAt(j)<='S'){
c_word = c_word+ String.valueOf(7);
}else if('T'<= word.charAt(j)&& word.charAt(j)<='V'){
c_word = c_word+ String.valueOf(8);
}else if('W'<= word.charAt(j)&& word.charAt(j)<='Z'){
c_word = c_word+ String.valueOf(9);
}
}
for(int i=0;i<c_word.length();i++) {
if(c_word.charAt(i) =='0') {
time += 11;
}else if(c_word.charAt(i) =='1') {
time += 2;
}else if(c_word.charAt(i) =='2') {
time += 3;
}else if(c_word.charAt(i) =='3') {
time += 4;
}else if(c_word.charAt(i) =='4') {
time += 5;
}else if(c_word.charAt(i) =='5') {
time += 6;
}else if(c_word.charAt(i) =='6') {
time += 7;
}else if(c_word.charAt(i) =='7') {
time += 8;
}else if(c_word.charAt(i) =='8') {
time += 9;
}else if(c_word.charAt(i) =='9') {
time += 10;
}
}
System.out.println(time);
}
}
굉장히 지저분하다.
반응형