[백준] 11654 - 아스키 코드 변환

2020. 9. 2. 10:21알고리즘/Baekjoon

백준링크 : 바로가기

 

11654번: 아스키 코드

알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

#문자열 #아스키 코드

아스키 코드 변환에 대한 개념을 정립할 수 있는 문제. char 문자가 숫자인지 문자인지 판별하는 Character.isDigit 클래스 메서드는 덤. 

아스키 코드

7비트로 표현한 정보교환용 부호체계. 총 128개의 부호가 사용된다. 2바이트 이상의 코드를 표현 못하기 때문에 유니코드(UTF-8)가 현재 국제표준 위상을 가지고 있다. Dec 컬럼이 10진수로 나타낸 숫자이고, Char 컬럼이 부호(아스키 코드)이다.

출처: https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C

Java에서의 아스키 코드 문자 to 숫자, 숫자 to 문자

 1) 숫자 to 문자

백준문제는 Java에서(내가 유일하게 사용하는 언어니까) 어떤 방법으로 아스키 코드를 구현할 수 있는지 묻고 있다. 간단하다. 부호를 찾고 출력하고 싶다면 숫자를 (char) 로 데이터 변환해주면 된다. 예를 들어, 알파벳 a~z를 배열에 입력하고 싶다. 한땀한땀 {'a', 'b', 'c'... , 'z'} 입력하는 방법이 있다. 또한 반복문으로 char 배열 그대로 유지하면서 (char) (i + 97)을 돌려주면 된다.  숫자는 형 변환에 따라 아스키 코드로 자동 컴파일 되며 char 배열엔 a(97)~z(122)가 저장된다. 이 방식은 [백준] 10809 - 알파벳 찾기 문제에서 그대로 사용된다.

2) 반대로 문자 to 숫자

반대로 아스키 코드 부호를 숫자로 나타내려면 어떻게 하면 될까? (int)로 형 변환해주면 된다. 더해줄 것도 없이 앞에 (int) val만 갖다 붙이면 된다. 쉽다.

package personal.week6;
/*
    알파벳 소문자, 대문자, 숫자0-9 중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하라
    - 입력: 알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다.
    - 출력: 글자의 아스키 코드 값을 출력한다.
 */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ascii_11654_ex {

    static String input;
    static char[] chr;
    static char arg;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        input = br.readLine();

        chr = input.toCharArray();
        arg = chr[0];
        if(Character.isDigit(arg)) {

            System.out.println((int) arg);
        } else {

            System.out.println((int) arg);
        }
    }
}

'알고리즘 > Baekjoon' 카테고리의 다른 글

[백준] 2941 - 크로아티아 알파벳  (0) 2020.09.10
[백준] 1316 - 그룹 단어 체커  (0) 2020.09.09
[백준] 1065 - 한수  (0) 2020.09.01
[백준] 11399 - ATM  (0) 2020.08.26
[백준] 1003 - 피보나치 함수(재도전)  (0) 2020.08.26