개발자 미니민의 개발스터디

[백준 JAVA] 5622번 풀이 - 🔥해결 !!!🔥

by mini_min
package baekjoon;
import java.io.IOException;
import java.util.Scanner;
/**
* 다이얼
* 오래된 다이얼 전화기가 있다.
* 숫자를 누르고 돌려야한다.
* 숫자를 누른 뒤에는 다시 처음으로 돌아가며, 숫자 1을 걸려면 총 2초가 필요하다.
* 한 칸 옆에 있는 숫자를 걸기 위해서는 1초씩 더 걸린다.
* 할머니는 전화번호를 각 숫자에 해당하는 문자로 외운다.
* 할머니가 외운 단어가 주어졌을 때, 전화를 걸기 위해 필요한 최소 시간을 구하시오.
*/
public class _5622 {
public static void main(String args[]) throws IOException{
Scanner sc = new Scanner(System.in);
String n = sc.next();
n = n.toUpperCase();
int sum = 0;
for ( int i = 0; i < n.length(); i++ )
{
char num = n.charAt(i);
if ( num == 83 || num == 90 )
{
sum += (num-65)/3 + 2;
}
else
{
sum += (num-65)/3 + 3;
}
}
System.out.println(sum);
sc.close();
}
}

 

 

문자를 연산해서 계산 잘 했다고 생각했는데 

자꾸 백준에서 틀렸다고 나온다. 틀린 이유를 생각해봤는데 어느 부분이 틀린건지 잘 모르겠다....

미해결로 두고 일단 다른 문제를 풀기로 했다... ㅠ

 

다른 분들은 CASE 문으로 풀었는데 나도 그렇게 풀어야할지...고민이다..

 

 

해결했다!

아스키코드 값을 3으로 나눌 때, 원하는 결과가 나오지 않는 케이스가 있었다. (V 라던가 ...)

그래서 그런 알파벳 경우는 IF 문 조건 안에 넣어서 해결..!!

package baekjoon;
import java.io.IOException;
import java.util.Scanner;
/**
* 다이얼
* 오래된 다이얼 전화기가 있다.
* 숫자를 누르고 돌려야한다.
* 숫자를 누른 뒤에는 다시 처음으로 돌아가며, 숫자 1을 걸려면 총 2초가 필요하다.
* 한 칸 옆에 있는 숫자를 걸기 위해서는 1초씩 더 걸린다.
* 할머니는 전화번호를 각 숫자에 해당하는 문자로 외운다.
* 할머니가 외운 단어가 주어졌을 때, 전화를 걸기 위해 필요한 최소 시간을 구하시오.
*/
public class _5622 {
public static void main(String args[]) throws IOException{
Scanner sc = new Scanner(System.in);
String n = sc.next();
n = n.toUpperCase();
int sum = 0;
for ( int i = 0; i < n.length(); i++ )
{
char num = n.charAt(i);
if ( num == 83 || num == 90 || num == 86 || num == 89 )
{
sum += (num-65)/3 + 2;
}
else
{
sum += (num-65)/3 + 3;
}
}
System.out.println(sum);
sc.close();
}
}

 

 

 

블로그의 프로필 사진

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기