-
[5월 둘째 주 #2-1][알고리즘] 백준 5622번 다이얼Algorithm/코알못 알고리즘 스터디 2022. 5. 10. 09:39
이번 주 문제
1️⃣ 백준 5622번 : 다이얼
2️⃣ 백준 1541번 : 잃어버린 괄호
1️⃣ 백준 5622번 : 다이얼
5622번: 다이얼
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
www.acmicpc.net
문제 분석
특정한 변수들에 '소요되는 시간 값(1초 단위)'이 저장되어 있고, 입력으로 변수들이 무작위로 주어지면 값들을 모두 더하는 문제로 볼 수 있다.
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 operator(?)1 2 3 4 5 6 7 8 9단순하게 총 경우의 수가 26개 뿐이므로, 전체를 순환하며 해당되는 변수를 찾은 뒤 값들을 더하면 될 것 같다.
코드
import java.util.*; public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); String input = scanner.nextLine(); int result = 0; char[] input_array = new char[input.length()]; for(int i=0;i<input.length();i++){ input_array[i]=input.charAt(i); } for(int i=0;i<input.length();i++){ switch(input_array[i]){ case 'A': case 'B': case 'C': result += 3; break; case 'D': case 'E': case 'F': result += 4; break; case 'G': case 'H': case 'I': result += 5; break; case 'J': case 'K': case 'L': result += 6; break; case 'M': case 'N': case 'O': result += 7; break; case 'P': case 'Q': case 'R': case 'S': result += 8; break; case 'T': case 'U': case 'V': result += 9; break; case 'W': case 'X': case 'Y': case 'Z': result += 10; break; } } System.out.println(result); } }
Scanner를 사용해 문자열로 입력받고 각 자리의 하나씩의 문자들을 char형 배열에 저장하였다. 그리고 해당 char형 배열을 순회하면서 switch-case 문을 이용해 조건에 맞는 값을 더하였다.
제출 결과 고찰
매우 단순하게 주어진 그대로 구현했을 뿐이다. 성능향상을 위해서는 이진탐색이나 정렬 등 주워들은 여러 방법들이 있을지도 모르겠다.
뭘 모르는지 몰라서 검색조차 어렵다고 느꼈기 때문에, 대표적인 알고리즘 관련된 책이나 강의를 통해 학습을 할 계획을 잡았다.
구글링을 해보니 입력 문자열을 문자로 나눠 char형 배열에 담을 필요는 없었다. 그냥 .charAt() 을 사용하는게 더 효율적이었다.
'Algorithm > 코알못 알고리즘 스터디' 카테고리의 다른 글
[6월 첫째 주 #5-1][알고리즘] 백준 10828번 : 스택 (0) 2022.06.02 [5월 셋째 주 #2-2][알고리즘] 백준 1920번 : 수 찾기 (0) 2022.05.25 [5월 셋째 주 #2-1][알고리즘] 백준 2744번 : 대소문자 바꾸기 (0) 2022.05.22 [5월 둘째 주 #2-2][알고리즘] 백준 1541번 : 잃어버린 괄호 (0) 2022.05.11 [5월 첫째 주 #1] (0) 2022.05.02