https://www.acmicpc.net/problem/11720
11720번: 숫자의 합
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
www.acmicpc.net
단계 중 '문자열'에 속하는
'숫자의 합' 을 풀어보자..
우선 문제를 보자!!
음...
정말 짧군...
변수를 준비해보자
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 사용이 익숙해진거같다...아직은 갈길이 멀다...
'java' 카테고리의 다른 글
백준 2563번 문제 색종이(Java_자바) (0) | 2024.03.07 |
---|---|
백준 10798번 문제 세로읽기(Java_자바) (0) | 2024.03.06 |
백준 2566번 문제 최댓값(Java_자바) (0) | 2024.03.03 |
백준 2738번 문제 행렬 덧셈 (Java_자바) (0) | 2024.03.03 |
(java) - 특정 문자 빼고 배열에 담아서 순서대로 SELECT(Boolean) (0) | 2021.11.23 |