https://www.acmicpc.net/problem/5622
5622번: 다이얼
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
www.acmicpc.net
방법1. charAt()이용하기
package s07_string;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class MJ_08_5622 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String S = br.readLine();
int count = 0;
for(int i=0;i<S.length();i++) {
int x = S.charAt(i);
if(x<65) count += 2;//다이얼1
else if(x<=67) count += 3;//다이얼2
else if(x<=70) count += 4;//다이얼3
else if(x<=73) count += 5;//다이얼4
else if(x<=76) count += 6;//다이얼5
else if(x<=79) count += 7;//다이얼6
else if(x<=83) count += 8;//다이얼7
else if(x<=86) count += 9;//다이얼8
else if(x<=90) count += 10;//다이얼9
else count += 11;//다이얼0일때는...?
}
System.out.println(count);
}
}
숫자 아래 문자들을 애초에 아스키코드로 변환하여 charAt()메서드를 이용하여 if문으로 조건 체크하며 초를 counting해줬다!
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 s = br.readLine();
int count=0;
int k = s.length();
for(int i = 0 ; i < k ; i++) {
switch(s.charAt(i)) {
case 'A' : case 'B': case 'C' :
count += 3;
break;
case 'D' : case 'E': case 'F' :
count += 4;
break;
case 'G' : case 'H': case 'I' :
count += 5;
break;
case 'J' : case 'K': case 'L' :
count += 6;
break;
case 'M' : case 'N': case 'O' :
count += 7;
break;
case 'P' : case 'Q': case 'R' : case 'S' :
count += 8;
break;
case 'T' : case 'U': case 'V' :
count += 9;
break;
case 'W' : case 'X': case 'Y' : case 'Z' :
count += 10;
break;
}
}
System.out.print(count);
}
}
switch(s.charAt(i)) {
case 'A' : case 'B': case 'C' :
이 부분에서 charAt()메서드를 쓰면 아스키코드가 나오니까
65~90 중 하나의 수가 나오는데
어떻게 'A' 'B' 'C'와 비교가 되는지?
-
'A', 'B', 'C'도 숫자로 이루어진 아스키값.
다만, char형의 경우 출력을 할 때 그에 대응하는 문자를 출력해줄 뿐이다.
System.out.print( (char)65 ); 를 하면, A문자가 출력되고
반대로
System.out.print( (int)'A'); 를 하면 65가 출력된다.
'ONLINE JUDGE > 문자열' 카테고리의 다른 글
[백준2941] 크로아티아 알파벳 (0) | 2022.03.18 |
---|---|
[백준2908] 상수 (0) | 2022.03.11 |
[백준1152] 단어의 개수 (0) | 2022.03.11 |
[백준1157] 단어 공부 (0) | 2022.03.10 |
[백준2675] 문자열 반복 (0) | 2022.03.09 |
댓글