본문 바로가기
프로그래밍/백준 알고리즘 코드

백준 1065번 java 자바 한수 charAt()이용

by 졸린이 2020. 9. 9.
반응형

백준 1065번 java 자바 한수 StringcharAt()이용

 

1~n 사이의 한수의 개수를 출력한다. 한수란 즉 각 자리수가 등차수열을 이루면 된다.

123 이면 1과 2는 1차이 2와 3은 1차이가 나므로 한수다. 127은 한수가 아니다.

이런식으로 1~n까지 범위내에서 한수가 몇개인지 체크한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.Scanner;
 
//baekjoon_1065
public class Main{
    static int hanNum(int n) {
        int cnt = 0;
        for(int i=1; i<=n; i++
        {
            
            if(i<100//100아래 두 자리로는 다 한수이다.
                cnt++;
            else if(i<=1000
            {
                String st = String.valueOf(i);
                int sub = st.charAt(1- st.charAt(0);
                int sub2 = st.charAt(2- st.charAt(1);
                if(sub == sub2)
                    cnt++;
            }
        }
        return cnt;
            
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        System.out.println(hanNum(n));
    }
}
cs

메인함수부터 보자.

line 26, 27 : n을 입력하여 함수호출하고 리턴값을 받아서 출력한다.

line 6 : 한수 개수를 출력할 return 변수 cnt를 선언한다.

line 7 : 1~n 범위 내에서 한수를 찾을 것이므로 1~n까지 반복.

line 10 : 100아래 즉 두자리수는 비교할 수가 2개이므로 다 한수이다. (ex28 : 2 8 이 두수만으로는 그냥 등차수열이다.)

100아래 수는 다 한수로 카운트 해준다.

line 12 : 99까지는 그냥 세고 1000이하에서 검사해준다.

line 14 : 각 자리수를 추출해서 비교할 것이므로 (숫자 세개만 비교하면 된다.) string 변수로 넣는다.

line 15, 16 : charAt()함수로 0번째 1번째 비교를 int형 sub에 넣고 1번째 2번째 비교를 sub2에 넣는다.

line 17 : sub, sub2값이 같으면 등차수열이므로 카운트한다.

line 21 : for문이 다 끝나면 cnt값을 리턴시켜준다.

반응형

댓글