Algorithm/BOJ(Baekjoon Online Judge)

[백준 - 1871번] 좋은 자동차 번호판 - Java //Wello Horld//

koucop 2019. 8. 14. 15:13

이번에는 BOJ의 1871번 문제 "좋은 자동차 번호판" 을 풀어보도록 하자

번호판이 "문자열 - 숫자" 로 되어 있고, 뺄셈하는 것 같이 문자열을 A를 기준으로 해서 26진법으로 만든 다음에

>> |문자열 - 숫자|

를 해서 해당 번호판의 가치를 뽑아내면 되는 문제이다.
해당 번호판의 가치가 100이하이면 "nice"를, 그렇지 않으면 "not nice"를 출력하면 된다.

성공한 코드는 아래와 같다.

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());
        for(int i = 0; i < N; i++){
            String input = br.readLine();
            String a = input.split("-")[0];
            String b = input.split("-")[1];
            int valueA = 0;
            for(int j = 0; j < a.length(); j++){
                int value = a.charAt(j) - 'A';
                value *= Math.pow(26, 2 - j);
                valueA += value;
            }
            int valueB = Integer.parseInt(b);
            if(Math.abs(valueA - valueB) <= 100) bw.write("nice\n");
            else bw.write("not nice\n");
        }

        bw.flush();
        br.close();
        bw.close();
    }
}

 

문제 : https://www.acmicpc.net/problem/1871

 

1871번: 좋은 자동차 번호판

문제 앨버타의 자동차 번호판은 ABC-0123 (세 글자, 네 숫자)와 같이 두 부분으로 나누어져 있다. 좋은 번호판은 첫 번째 부분의 가치와 두 번째 부분의 가치의 차이가 100을 넘지 않는 번호판이다. 글자로 이루어진 첫 번째 부분의 가치는 글자를 26진법 수처럼 계산한다. (각 자리가 [A..Z]) 예를 들어, "ABC"의 가치는 28 (0*26^2 + 1*26^1 + 2*26^0)이 된다. "ABC-0123"은  |28 - 123| <= 100 이

www.acmicpc.net