📊 Algorithm&SQL
[Java/백준] 숫자의 합 #11720
오늘 ONEUL
2022. 9. 30. 00:30
💡 바로 로직을 구현하거나 코딩하지 말고, 문제의 내용과 조건을 꼼꼼히 분석하고 방향 설정하기!
문제
풀이
(1) 문제 분석하기
- N의 범위가 1부터 100까지이므로 int형, long형과 같은 숫자형으로 담을 수 없음
- 먼저 문자열 형태로 받아서 문자 배열로 변환 후, 숫자형으로 변환하여 더해야 함
- 문자열을 숫자형으로 변환하기 위해 toCharArray 함수 사용(문자열을 char형 배열로 변환)
- char형을 int형으로 변환하기 위해 아스키코드를 이해해야 함(문자 '1'과 숫자 1은 48 차이 / 아스키코드 48 = '0')
(2) 손으로 풀어보기
- 입력된 데이터를 String형으로 저장
- String형으로 입력받은 값을 char [] 형으로 변환 → toCharArray 이용
- 인덱스 0부터 끝까지 배열을 탐색하며 값을 int형으로 변환 → 아스키코드 성질 이용
- 결괏값에 더하여 누적
(3) 슈도코드 작성하기
슈도코드(Pseudo Code)란? 프로그램을 어떤 과정으로 진행시킬지 미리 적어보는 것
N값 입력받기
길이 N의 숫자를 입력받아 String형 변수 sNum에 저장하기
sNum을 다시 char []형 변수 cNum에 변환하여 저장하기
int형 변수 sum 선언하기
for(cNum 길이만큼) {
정수형으로 변환하며 sum에 더하기
}
sum 출력하기
(4) 코드 구현하기
import java.util.Scanner;
public class SumOfNumbers11720 {
// Point!
// N의 범위가 1부터 100까지이므로 int형, long형과 같은 숫자형으로 담을 수 없음
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
// split을 이용한 풀이
String[] nums = sc.next().split("");
int result = 0;
for (int i = 0; i < nums.length; i++) {
result += Integer.parseInt(nums[i]);
}
System.out.println(result);
// toCharArray를 이용한 풀이
String sNum = sc.next();
char[] cNum = sNum.toCharArray();
int sum = 0;
for (int i = 0; i < cNum.length; i++) {
sum += cNum[i] - '0';
}
System.out.println(sum);
}
}
11720번: 숫자의 합
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
www.acmicpc.net
※ 이 내용은 Do it! 알고리즘 코딩테스트 - 실전문제 풀이(JAVA) 강의를 듣고 정리한 내용입니다.