반응형
이 문제는 각각 알파벳마다 번호가 지정되어 있기 때문에 입력된 알파벳마다 숫자를 부여해줘야 합니다.
정답 코드 1)
반응형
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.next();
int sum = 0;
for(int i = 0; i < str.length(); i++){
char ch = str.charAt(i);
int num = (int)ch;
if(num >= 'A' && num <= 'C'){
sum = sum+3;
}else if(num >= 'D' && num <= 'F'){
sum = sum+4;
}else if(num >= 'G' && num <= 'I'){
sum = sum+5;
}else if(num >= 'J' && num <= 'L'){
sum = sum+6;
}else if(num >= 'M' && num <= 'O'){
sum = sum+7;
}else if(num >= 'P' && num <= 'S'){
sum = sum+8;
}else if(num >= 'T' && num <= 'V'){
sum = sum+9;
}else if(num >= 'W' && num <= 'Z'){
sum = sum+10;
}
}
System.out.print(sum);
}
}
첫 번째는 아스키코드를 이용하여 num이 'A' ~ 'C' 아스키코드 값 사이일 때 3, 'D' ~ 'F' 아스키 코드 값 사이일 때 4..로 잡으면 문제를 풀 수 있겠다는 생각이 들었다.
이런 방법을 기반으로 if ~ else 문을 사용하여 알파벳 범위 안에 들어왔을 때 해당 숫자+1을 부여하도록 설정하였다.
정답 코드 2)
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.next();
int sum = 0;
for(int i = 0; i < str.length(); i++){
switch(str.charAt(i)) {
case 'A' : case 'B': case 'C' :
sum += 3;
break;
case 'D' : case 'E': case 'F' :
sum += 4;
break;
case 'G' : case 'H': case 'I' :
sum += 5;
break;
case 'J' : case 'K': case 'L' :
sum += 6;
break;
case 'M' : case 'N': case 'O' :
sum += 7;
break;
case 'P' : case 'Q': case 'R' : case 'S' :
sum += 8;
break;
case 'T' : case 'U': case 'V' :
sum += 9;
break;
case 'W' : case 'X': case 'Y' : case 'Z' :
sum += 10;
break;
}
}
System.out.print(sum);
}
}
2번째 방법으로는 switch ~ case문을 사용해서 문제를 해결할 수 있다.
str.charAt(i) 값이 case와 같을 때 그에 해당하는 실행문을 실행하여, 입력값 맞게 출력값이 출력할 수 있다.
반응형
'Baekjoon 자바 코드 > 문자열' 카테고리의 다른 글
[백준] 2743번 단어 길이 재기 풀이 코드 (Java 자바) (0) | 2024.08.09 |
---|---|
[백준] 27866번 문자와 문자열 풀이 코드 (Java 자바) (0) | 2024.08.07 |
[백준] 11718번 그대로 출력하기 풀이 코드 (Java 자바) (0) | 2024.04.18 |
[백준] 2908번 상수 풀이 코드 (Java 자바) (0) | 2024.04.16 |
[백준] 1152번 단어의 개수 풀이 코드 (Java 자바) (0) | 2024.04.15 |