python-for-coding-test icon indicating copy to clipboard operation
python-for-coding-test copied to clipboard

p.115 왕실의 나이트 문제

Open azurealstn opened this issue 5 years ago • 1 comments

안녕하세요. 자바 코드로 공부중에 궁금한 점이 생겼습니다!

    String inputData = sc.nextLine();
    int row = inputData.charAt(1) - '0';
    int column = inputData.charAt(0) - 'a' + 1;

현재 나이트의 위치를 입력받은 코드인데, 뒤에 -'0' 이나 -'a' + 1 이 어떤 값인지 궁금합니다.(왜 저렇게 하는지..)

azurealstn avatar Sep 30 '20 15:09 azurealstn

안녕하세요, @azurealstn 님!

좋은 질문 감사합니다.

자바에서 문자끼리 더하기 혹은 빼기 연산을 할 때는 아스키코드(ASCII code)값 사이에서의 연산이 수행됩니다.

예를 들어 단순히 다음의 코드를 실행하면 2라는 값이 출력됩니다.

System.out.println('c' - 'a');

C언어나 자바에서는 이러한 원리를 이용해 인덱스를 계산하고자 '0'이나 'a'를 빼는 방법들이 종종 사용됩니다.

또 다른 예시로 다음의 코드를 실행하면 97이라는 값이 출력됩니다.

System.out.println((int) 'a');

감사합니다. 나동빈 드림

ndb796 avatar Oct 24 '20 08:10 ndb796