Baekjoon

[백준 - 자바] 문자열 - 11654번 / 11720번

yujin0517 2021. 7. 5. 23:25

11654번 - 아스키코드

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
        
		char munja = sc.nextLine().charAt(0);
		int num = (int)munja;
        
		System.out.println(num);
	}
}

* charAt() :  해당 문자의 아스키코드를 반환해주는 메소드.

입력받은 문자를 아스키코드로 반환한 뒤, int(정수형)로 형변환을 하여 num변수에 대입한다.

 

11720번 - 숫자의 합

방법 1) charAt() 메소드 사용

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();  //문자열의 길이를 입력
		String num = sc.next();  //문자열 입력
		sc.close();
		
		int sum = 0;
        
		for(int i = 0; i < N; i++) {
			sum += num.charAt(i)-'0'; 
		}
		System.out.println(sum);
	}
}

입력받은 문자열을 charAt() 메소드를 통해 아스키코드로 변환한 뒤, '0' 혹은 48을 빼주어 sum변수에 대입한다.

여기서 '0' 혹은 48을 빼주어야 자기 자신의 숫자를 가질 수 있다.  

 

방법 2) 문자열을 입력받고, getBytes() 메소드 사용

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

public class Main {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		br.readLine();
		
		int sum = 0;
		
		for(byte num : br.readLine().getBytes()) {
			sum += (num - '0');
		}
		System.out.println(sum);
	}
}

* getBytes() : 문자열을 입력받을 때 해당 문자열을 byte배열로 반환받을 수 있는 메소드, java.lang.string 패키지에 있는 메소드이므로 따로 import 할 필요 없음.

BufferedReader, InputStreamReader를 사용하여 문자열을 입력받는다. 

getBytes() 메소드를 사용하여 입력받은 문자열을 byte 단위로 변환시켜 num변수에 대입한다.

num변수에서 '0' 혹은 48을 빼주어 자기 자신의 숫자를 가진 뒤, 반복문이 끝날 때까지 sum변수에 더해준다.

 

2021.07.05