제출 답안
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
int a = System.in.read();
System.out.println(a);
}
}
- System.in 은 byte 값으로 문자 한 개만 읽으면서 해당 문자에 대응되는 아스키코드 값을 저장할 수 있다.
* 예외처리를 해줘야 한다. -> throws IOException
📌 아스키코드 설명 - 출처:나무위키
ASCII (American Standard Code for Information Interchange, 미국 정보 교환 표준 부호)
아스키 코드는 1963년 미국 ANSI 에서 표준화한 정보교환용 7비트 부호체계이다.
인쇄전신기(Teleprinter)를 통한 전신 (통신)에서 사용되기 시작했고, 8비트 컴퓨터에서도 활용되어 오늘날 문자 인코딩의 근간을 이루게 된다.
000(0x00)부터 127(0x7F)까지 총 128개의 부호가 사용된다. 1바이트를 구성하는 8비트 중에서 7비트만 쓰도록 제정된 이유는, 나머지 1비트를 통신 에러 검출을 위한 용도로 비워두었기 때문이다. Parity Bit라고 해서, 7개의 비트 중 1의 개수가 홀수면 1, 짝수면 0으로 하는 식의 패리티 비트를 붙여서, 전송 도중 신호가 변질된 것을 수신측에서 검출해낼 수 있도록 하였다. 일종의 원시적인 CRC 체크섬이라고 할 수 있다.
영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 가장 기본적인 부호 체계이다. 매우 단순하고 간단하기 때문에 어느 시스템에서도 적용가능하다는 장점이 있다. 8비트 컴퓨터에서는 아스키 코드에 1비트를 더해 더 많은 문자를 표현할 수 있는 여지가 생겼고, 아스키 코드에 없는 문자를 추가해 "코드페이지"를 제정하였다.
IBM PC에서는 "Codepage 437"(라틴어, 음성기호, 수학기호, 괘선, 특수문자 등 추가)을 사용했고, 확장된 아스키 코드의
사실상 표준 이 되었다. 이외 각 국의 언어에 따라 다양한 코드페이지가 존재하는데, 대부분 아스키 코드에 기반하여(가급적 훼손하지 않고) 제작된다.
한글 인코딩은 2바이트 이상을 써야 가능했기 때문에 아스키 코드를 건드릴 수 밖에 없었고, 초창기에는 글자 깨짐 문제가 종종 발생하였다. 코드페이지(CP949 등)를 맞춰주지 못하면 역시 글자 깨짐이 발생했고, 해외게임을 할 때 특히 그러했다.
유니코드가 제정되면서 글자 깨짐은 끝날 줄 알았지만 멀티 바이트의 엔디안 문제로 글자는 또 깨졌고, ASCII가 호환되는 UTF-8이 널리 사용되면서 글자 깨짐은 막을 내리게 된다.
ASCII와 CP437에는 CLI 인터페이스에서도 그림을 그릴 수 있게 각종 특수 문자가 존재하는데, 이를 적극적으로 활용하여 예술로 승화시킨 것을 아스키 아트라 부른다. Text only 형태의 게시판에서 자주 보였다.
* 엔터 ==13 / 스페이스 ==32로 값을 비교할 때 사용하는 게 바로 아스키 코드이다.
'Etc > 코딩테스트' 카테고리의 다른 글
[백준] 10809번 - 알파벳 찾기 JAVA 자바 CharAt()함수 활용 (0) | 2023.09.11 |
---|---|
[백준] 11720번 - 숫자의 합 JAVA 자바 (아스키코드 활용) (0) | 2023.09.11 |
[백준] 9086번 - 문자열 JAVA 자바 문제풀이 CharAt()&length() (0) | 2023.09.11 |
[백준] 2743번 - 단어 길이 재기 JAVA 자바 - length()함수 (0) | 2023.09.11 |
[백준] 27866번 - 문자와 문자열 자바 JAVA (CharAt함수 사용) (0) | 2023.09.11 |