https://www.acmicpc.net/problem/5622
5622번: 다이얼
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
www.acmicpc.net
주의점
- 대문자로 입력
- 시간의 합 구하기
구현 방법
- Scanner + for 문 + switch-case
- BufferedReader + for 문 + switch-case
- System.in + for 문 + switch-case
풀이
1. Scanner + for 문 + switch-case
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
int cnt = 0;
int k = str.length();
for(int i = 0; i < k; i++) {
switch(str.charAt(i)) {
//String.charAt(): 문자열의 문자 가져옴
//"A" (X) / 'A' (O)
case 'A' : case 'B': case 'C' :
cnt += 3;
break;
case 'D' : case 'E': case 'F' :
cnt += 4;
break;
case 'G' : case 'H': case 'I' :
cnt += 5;
break;
case 'J' : case 'K': case 'L' :
cnt += 6;
break;
case 'M' : case 'N': case 'O' :
cnt += 7;
break;
case 'P' : case 'Q': case 'R' : case 'S' :
cnt += 8;
break;
case 'T' : case 'U': case 'V' :
cnt += 9;
break;
case 'W' : case 'X': case 'Y' : case 'Z' :
cnt += 10;
break;
}
}
System.out.print(cnt);
}
}
2. BufferedReader + for 문 + switch-case
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int cnt = 0;
int k = str.length();
for(int i = 0; i < k; i++) {
switch(str.charAt(i)) {
case 'A' : case 'B': case 'C' :
cnt += 3;
break;
case 'D' : case 'E': case 'F' :
cnt += 4;
break;
case 'G' : case 'H': case 'I' :
cnt += 5;
break;
case 'J' : case 'K': case 'L' :
cnt += 6;
break;
case 'M' : case 'N': case 'O' :
cnt += 7;
break;
case 'P' : case 'Q': case 'R' : case 'S' :
cnt += 8;
break;
case 'T' : case 'U': case 'V' :
cnt += 9;
break;
case 'W' : case 'X': case 'Y' : case 'Z' :
cnt += 10;
break;
}
}
System.out.print(cnt);
}
}
3. System.in + for 문 + switch-case
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
int cnt = 0;
int value;
/*
백준에서는 조건 내의 값만 입력 받음 = 예외값이 입력되지 않음
그렇기에 별 생성 없이 원시 입력을 받아 문자값만 알아내 cnt++ 해도 됨
*/
while(true) {
value = System.in.read();
if(value == '\n') {
break;
}
if(value < 68) cnt += 3;
else if(value < 71) cnt += 4;
else if(value < 74) cnt += 5;
else if(value < 77) cnt += 6;
else if(value < 80) cnt += 7;
else if(value < 84) cnt += 8;
else if(value < 87) cnt += 9;
else cnt += 10;
}
System.out.print(cnt);
}
}
성능
- System.in + for 문 + switch-case
- BufferedReader + for 문 + switch-case
- Scanner + for 문 + switch-case
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1316번 : 그룹 단어 체커 - Java (0) | 2022.03.22 |
---|---|
[백준] 2941번 : 크로아티아 알파벳 - Java (0) | 2022.03.22 |
[백준] 2908번 : 상수 - Java (0) | 2022.03.21 |
[백준] 1152번 : 단어의 개수 (0) | 2022.03.21 |
[백준] 1157번 : 단어 공부 - Java (0) | 2022.03.18 |
댓글