100세까지 코딩
[do it 알고리즘] 백준 11720 (배열과 리스트) 본문
문제 설명
풀기 전 생각
- 공백없는 숫자를 나머지 연산과 나누기 연산을 반복하여 끝부터 더해 나가기
- 반복 횟수는 입력받은 숫자의 개수만큼
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
int j = sc.nextInt();
int sum = 0;
while(i > 0){
sum += j % 10;
j /= 10;
i--;
}
System.out.println(sum);
}
}
오류 및 개선
- 브론즈4인 것을 보고 너무 쉽게 생각해 바로 코딩한 것이 문제
- 숫자의 개수 N이 100까지 입력될 수 있다는 조건과 예제3에서 입력범위 초과
- long의 범위도 벗어나니, String으로 받고 toCharArray을 사용해 배열로 바꿔야함
- char -> int하려면 (숫자 - '0') 해야함
최종
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
String str = sc.next();
char[] arr = str.toCharArray();
int sum = 0;
for(int a=0; a<arr.length; a++){
System.out.println(arr[a]);
}
for(int a=0; a<arr.length; a++){
System.out.println(arr[a]);
}
System.out.println(arr[0]-'0');
System.out.println(sum);
}
}
참고
1. 초보자들이 코딩테스트에서 하는 실수
- 변수 초기화 오류
- 배열 인덱스 오류
- 변수 사용 오류
- 자료형 범위 오류 (int -> long으로 바꿔보기)
- 무턱되고 하기 보단 조건을 꼼꼼히 보고 그려보고 코딩짜기
2. char -> int 방법
- 문자 '0'을 빼주기. ex) '8' - '0' = 8
- 아스키코드로 '0'해당 값인 48빼주기. ex) '8' - 48 = 8
- Character 클래스 사용. ex) Character.getNumericValue('8') = 8
'코딩테스트 > 자바' 카테고리의 다른 글
[do it 알고리즘] 백준 11659 (구간 합 구하기) (0) | 2023.09.22 |
---|---|
[do it 알고리즘] 백준 1546 (배열과 리스트) (0) | 2023.09.19 |
[프로그래머스] Lv0.전국 대회 선발 고사 (0) | 2023.09.01 |
[프로그래머스] Lv0.특이한 정렬 (0) | 2023.08.31 |
[프로그래머스] Lv0.배열 만들기 2 (0) | 2023.08.29 |