관리 메뉴

100세까지 코딩

[do it 알고리즘] 백준 11720 (배열과 리스트) 본문

코딩테스트/자바

[do it 알고리즘] 백준 11720 (배열과 리스트)

100세까지 코딩 2023. 9. 17. 19:28
문제 설명

 

풀기 전 생각
  • 공백없는 숫자를 나머지 연산과 나누기 연산을 반복하여 끝부터 더해 나가기
  • 반복 횟수는 입력받은 숫자의 개수만큼
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