본문 바로가기
알고리즘 문제풀이

[Backjoon] 4613번 문제 - Quicksum

by 마스터누누 2017. 6. 28.
728x90
반응형

이 문제에서 당신은 Quicksum이라고 하는 checksum 알고리즘을 구현해야 한다.  Quicksum 패킷은 오직 대문자와 공백으로 이루어져있다. 그리고 시작과 끝은 항상 대문자이다.  공백은 문자와 섞여있을수 있으며 연속되어서 있을수도 있다.

Quicksum은 각각의 캐릭터의 위치와 케릭터 값의 합이다. 공백은 0이다. 문자는 고유의 위치값을 가지고 있는데 예를들어 A=1, B=2 ... Z=26이다.

예제 문장은 "ACM" 과 "MID CENTRAL"인데 살펴보면 다음과 같다.

ACM: 1*1  + 2*3 + 3*13 = 46

MID CENTRAL: 1*13 + 2*9 + 3*4 + 4*0 + 5*3 + 6*5 + 7*14 + 8*20 + 9*18 + 10*1 + 11*12 = 650


풀이

문자열에 저장 후 반복문 안에서 순환 하며 charAt으로 값을 찾아 연산하고 더해준다

여기서 공백이 아닐 경우만 연산을 수행하게 된다.

주의할 점은 scanner를 사용할 때 next()를 쓰면 공백을 기준으로 끊기게 되므로, nextLine()을 쓰자


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.Scanner;
 
/**
 * Created by homr on 2017. 6. 28..
 */
public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String str;
 
        while(true){
            str = sc.nextLine();
            if(str.equals("#")){
                break;
            }
 
            int num = 0;
 
            for(int i=0; i<str.length(); i++){
                if(str.charAt(i)!=' ') {
                    num += (str.charAt(i) - 64* (i + 1);
                }
            }
 
            System.out.println(num);
        }
    }
}
 
cs


반응형

댓글