[백준 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활동하기
개발자 미니민의 개발로그1년차 백엔드 개발자 미니민입니다.
꾸준히 배우고 성장하는 것에 기쁨을 느낍니다 :)