java

백준 11720번 숫자의 합(Java_자바)

먼지제거제 2024. 3. 4. 13:07

 

https://www.acmicpc.net/problem/11720

 

11720번: 숫자의 합

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

www.acmicpc.net

 

단계 중 '문자열'에 속하는

'숫자의 합' 을 풀어보자..


 

우선 문제를 보자!!

 

11720번 숫자의 합 문제
숫자의 합 예제 입/출력

 

 

 

음...

정말 짧군...

변수를 준비해보자

 

      int N = 0;
      
      String a = "";
      
      int sum = 0;

 

 

'정수 N'숫자의 개수!

'문자열 a''정수 N'개 만큼 입력된 문자열

'정수 sum'정수 N 개수 만큼의 합을 누적해주자!

 


 

 예제 입력으로 확인해보자!

for문 초기치 i를 0으로, 조건식을 i < N, 당연히 증감 i++

 

// 예제 입력
// 5		 정수 N
// 54321     문자열 a

for(int i = 0; i < N; i++) {
     sum += a.charAt(i)-'0';
}

 

정리해보자!

charAt() 메소드를 사용하여 문자열에서 한 글자씩 읽어온 후,
 '0'을 빼서 해당 문자를 숫자로 변환하여 sum에 누적!

 

이제는 합쳐보자!


Scanner

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int N = in.nextInt();
        String a = in.next();
        in.close();

        int sum = 0;

        for(int i = 0; i < N; i++) {
            sum += a.charAt(i)-'0';
        }
        System.out.print(sum);
    }
}

 

결과는 두근두근..!

성공!

 

성공!!!

 

그리고 다른 방식도 해보자

이번에는 getBytes() 메소드를 사용해서 문자열을 바이트 배열로 변환,

다음 각 문자의 아스키 코드 값을 이용하여 숫자로 변환해보자!

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();
        int sum = 0;

        byte[] bytes = num.getBytes();

        for (byte b : bytes) {
            sum += b - '0';
        }

        System.out.println(sum);
        
        sc.close();
    }
}

 

성공!

 

성공!


메모리를 줄여보자!!

Scanner -> BufferedReader 로 변경!!!

BufferedReader

 

import java.io.*;

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 val : br.readLine().getBytes()){
            sum += val - '0';
        }

        System.out.print(sum);
        br.close();
    }
}

콘솔
성공!

 

 

 

 

BufferedReader 사용이 익숙해진거같다...아직은 갈길이 멀다...