반응형
Approach
출처: https://www.acmicpc.net/problem/5622
조건문 (if / switch)을 통해서 구현 가능하다.
Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int sum = 0;
for (int i = 0; i < str.length(); i++) {
int temp = (str.charAt(i)-'0' - 17);
if(temp < 3) {
sum = sum + 3; // 2
}else if(temp >= 3 && temp < 6) {
sum = sum + 4; // 3
}else if(temp >= 6 && temp < 9) {
sum = sum + 5; // 4
}else if(temp >= 9 && temp < 12) {
sum = sum + 6; // 5
}else if(temp >= 12 && temp < 15) {
sum = sum + 7; // 6
}else if(temp >= 15 && temp < 19) {
sum = sum + 8; // 7
}else if(temp >= 19 && temp < 22) {
sum = sum + 9; // 8
}else if(temp >= 22 && temp < 26) {
sum = sum + 10; // 9
}
}
System.out.println(sum);
}
}
연속되는 알파벳이므로
인덱스를 적절히 조절해서도 가능하긴 하다.
아스키 코드와 LUT(= Lookup Table)을 활용하였다.
C++
#include <stdio.h>
int point[] =
{
1, 1, 1, // A B C
2, 2, 2, // D E F
3, 3, 3, // G H I
4, 4, 4, // J K L
5, 5, 5, // M N O
6, 6, 6, 6, // P Q R S
7, 7, 7, // T U V
8, 8, 8, 8 // W X Y Z
};
const int LEN = 15 + 2;
int ans;
char str[LEN];
int main()
{
// freopen("input.txt", "r", stdin);
scanf(" %s", str);
// 받은 문자열을 한개씩 처리
for (int i = 0; str[i] != '\0' ; ++i)
{
ans += (point[str[i] - 'A'] + 2) ;
}
printf("%d\n", ans);
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 7568 덩치 (0) | 2022.03.03 |
---|---|
[BOJ] 백준 4948 베르트랑 공준 (0) | 2022.02.28 |
[BOJ] 백준 10866 덱 (0) | 2022.02.25 |
[BOJ] 백준 4673 셀프 넘버 (0) | 2022.02.25 |
[BOJ] 백준 11441 합 구하기 (0) | 2022.02.23 |
댓글