위 표를 보면 숫자 0은 Decimal 48임을 알 수 있다. byte를 int로 변환하기 위해서는 48 또는 ‘0’을 빼주면 된다.
1 2 3 4
// n이 byte형이기때문에 아래 두 식은 같은 의미 (n-48) == (n-'0') // int형으로 합을 하기 위해서 아스키코드에서 숫자 1은 49부터 시작하기때문에 숫자 0인 48을 빼줘야 함. sum += (n - 48); sum += (n - '0');
전체 코드는 아래와 같다. 배열을 사용한 것과 큰 차이는 안나지만 배열없이도 문제를 풀 수 있음을 배웠다.
1 2 3 4 5 6 7 8 9 10 11 12 13
publicclass_11720{
publicstaticvoidmain(String[] args)throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br.readLine(); // cnt는 사용하지 않으므로 입력만 받음 int sum = 0; for(byte n : br.readLine().getBytes()){ sum += (n - 48); //sum += (n - '0'); // n-48과 n-'0'은 같은 의미인데 그 이유는 아스키코드에서 숫자 1은 49부터 시작하기때문에 숫자 0인 48을 빼줘야 함. } System.out.println(sum); } }