코딩테스트/JAVA

[ 백준 ] 11654번 : 아스키 코드

어서오시우 2024. 1. 29. 14:34
728x90

 

문제

 

풀이 1
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int ch = sc.next().charAt(0);
System.out.println(ch);
}
}
  • int ch = sc.next().charAt(0);
    • 얻어온 문자는 int 타입의 변수에 저장되는데,
      자바에서는 문자를 정수로 변환할 때 해당 문자의 유니코드 코드포인트를 사용한다.
    • 유니코드 코드포인트는 아스키 코드의 일종으로, 아스키 코드보다 넓은 범위의 문자를 다루기 위해 설계되었다.
      숫자와 알파벳 대문자, 소문자의 경우 아스키 코드와 유니코드 코드포인트가 동일하다.

 

풀이 2
import java.io.IOException;

public class Main {
public static void main(String[] args) throws IOException {
int a = System.in.read();
System.out.println(a);
}
}
  • Scanner 와 같은 함수 없이도 System.in을 이용하여 Syste.in.read( ) 와 같은 방식으로
    직접 표준 입력에서 바이트를 읽어올 수 있다.
  • System.in.read( )는 InputStream 클래스의 메서드로서, 한 번에 하나의 바이트를 읽는다.
    • 다만, System.in.read( )는 바이트 단위로 읽기 때문에 문자열이나 여러 바이트로 구성된 데이터를 처리하기에는 적절하지 않으며, 해당 경우에는 Scanner나 BufferedReader와 같은 클래스를 사용하는 것이 편리하다.
  • System.in.read( ) 는 표준 입력에서 데이터를 읽는 메서드로,
    입력에서 한 바이트를 읽어서 해당 바이트의 ASCII 코드 값을 반환한다.
    • 반환 값은 int 형식으로 반환된다.
    • 입력이 더 이상 없을 경우 -1을 반환한다.