[Baekjoon]숫자의 합(11720번)
배열 관련 숫자의 합 문제를 풀어보자
백준브론즈배열코딩테스트알고리즘
본 포스팅은 백준 온라인 저지 에서 제공하는 문제의 풀이를 비상업적 목적으로 게시하였습니다.
ℹ️ 문제 정보
https://www.acmicpc.net/problem/28432
🔍 문제 분석
입력받는 숫자의 개수 N이 1≤N≤100 이므로 최대 100자리의 N은 int,long 자료형으로 저장할 수 없다. 문자열 형태로 저장해야 한다.
문자열로 저장 후 각각의 문자로 분리한다. → 문자열을 문자의 배열로 분리한다.
각각의 문자를 숫자로 변환한다.
변환된 숫자들을 더한다.
🖊️ 구체화 하기
입력받은 숫자의 개수만큼 String으로 저장한다.
String으로 입력받은 값을 char[]형으로 변환한다.
인덱스 0부터 배열을 탐색하며 각 값을 정수형으로 변환하고 결과값에 더하여 누적한다.
🗒️ 의사 코드 작성
N 값 입력받기
길이 N의 숫자를 입력받아 String 변수sNum에 저장하기
sNum을 다시 char[]g형 변수 cNum에 변환하여 저장하기
int 형 변수 sum선언하기
for(cNum 길이만큼 반복하기) {
배열의 각 자릿값을 정수형으로 변환하며 sum에 더하여 누적하기
}sum 출력
✅ 나의 정답 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/* 1. N 값 입력받기
2. 길이 N의 숫자를 입력받아 String 변수 sNum에 저장하기
3. sNum을 다시 char[]형 변수 cNum에 변환하여 저장하기
4. int 형 변수 sum선언하기
5. for(cNum 길이만큼 반복하기)
{
배열의 각 자릿값을 정수형으로 변환하며 sum에 더하여 누적하기
}
6. sum 출력
*/
public class 숫자의합구하기11720 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String sNum = br.readLine();
char[] cNum = sNum.toCharArray();
int sum = 0;
for (char num : cNum) {
sum += num - '0'; // *아스키 코드 값을 이용한 문자의 숫자 변환
}
System.out.println(sum);
}
}
🤔 회고
문제 분석 → 구체화 → 의사 코드 작성의 사고 순서를 앞으로도 적용해 봐야겠다.
아스키코드를 사용한 문자의 숫자 변환은 매우 빈번하게 쓰이므로 숙지해 둘 것.