본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q2012 : 1의 개수는? 2

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q2012 : 1의 개수는? 2 (자바, JAVA)입니다.

Intro

Question

문제 설명

구글 입사 시험으로 1 ~ 1,000,000까지 1의 개수를 묻는 문제가 나온적이 있다.
이중 for문을 배웠으니 이 문제를 일반화 시켜 문제를 풀어보자.
시작 수 a와 마지막 수 b가 주어지면 a부터 b까지의 수 중 1이 몇 번 들어 있는지 세는 프로그램을 작성하시오.
(숫자의 어느 위치에든 1이 있으면 개수를 센다)

예)
9 13 ----> 5번 ( 10, 11, 12, 13 : 11은 두번으로 계산)
110 113 ----> 9번 ( 110, 111, 112, 113 : 총 9번)

입력

시작수 a와 마지막 수 b가 입력된다.

출력

a와 b까지 1의 개수를 센다.

예시

  • 입력 : 1 10
  • 출력 : 2

Solution (풀이)

  • 풀이 : 메모리 56272, 시간 : 415
public class Answer1 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int a = Integer.parseInt(st.nextToken()); // 시작 수
        int b = Integer.parseInt(st.nextToken()); // 마지막 수

        int count = 0;
        for (int i=a; i<=b; i++) { // a부터 b까지 for문 반복
            for (int j=0; j<String.valueOf(i).length(); j++) { // 각 자리 숫자 length만큼 반복문
                if (String.valueOf(i).charAt(j) == '1') {
                    count++;
                }
            }
        }
        System.out.println(count);
    }

}

Ranking(순위)

반응형