[★1][백준11720번]숫자의 합 (JAVA)

Date:     Updated:

카테고리:

태그:

[★1][백준11720번]숫자의 합 (JAVA)

11720번 문제 ☞ https://www.acmicpc.net/problem/11720

난이도 ☞ [★1]

숫자의 합

  • 문제
    • N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
    • 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
    • 입력으로 주어진 숫자 N개의 합을 출력한다.

      예제입력 예제출력
      1
      1
      1
      예제입력 예제출력
      5
      54321
      15
      예제입력 예제출력
      25
      7000000000000000000000000
      7
      예제입력 예제출력
      11
      10987654321
      46

내가 푼 풀이

이번 문제는 매우 쉬운데 그래서 틀렸다. 매우 단순하게 코드를 작성해보았는데 그 코드는 아래와 같다.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		
		int N = s.nextInt();
		int sum = 0;
		for (int i = 0; i < N; i++) {
			sum += s.nextInt();
		}
		System.out.println(sum);
	}

}

그래서 틀렸다. 이렇게 푸는 문제가 아니었다. 너무 쉽게 생각하고 접근했던 거 같다. 하지만 그래도 어렵지 않았다. 코드는 아래와 같다.

[ 풀이 1 ]

메모리 : 14100KB
시간 : 120ms

Scanner, charAt()

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		
		int N = s.nextInt();
		String str = s.next();
		
		s.close();
		
		int sum = 0;
		
		for (int i = 0; i < N; i++) {
			sum += str.charAt(i) - 48;
		}
		System.out.println(sum);
	}

}

chatAt()을 사용하여, 우리가 아는 숫자로 표현을 하려면 chatAt() - 48;으로 작성을 해주어야 우리가 아는 숫자로 표현이 된다. 뿐만 아니라 chatAt() - '0';으로 작성을 해주면 된다. 그리고 BufferedReader롤 체택하여 작성하려면 charAt()이 아닌 getBytes()를 사용하여야 한다. 우선 코드를 보기 전 getBytes()에 대해 설명을 붙인다.

getBytes()

  • 문자열(String)에 대하여 해당 문자열을 하나의 byte 배열로 변환해주는 메서드
  • 변환 방식은 UTF-8이 아닌 UTF-16으로 변경되는 값을 따름.

[ 풀이 2 ]

메모리 : 14196KB
시간 : 124ms

BufferedReader, getBytes()

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

public class Main {

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

}

여기서도 '0'이나 48을 빼주어야 한다.

BKJN 카테고리 내 다른 글 보러가기

댓글 남기기