반응형
백준 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값을 리턴시켜준다.
반응형
'프로그래밍 > 백준 알고리즘 코드' 카테고리의 다른 글
백준 11720 java 자바 숫자의 합 (0) | 2020.09.13 |
---|---|
백준 11654 자바 java 아스키 코드 (2) | 2020.09.13 |
백준 4673 자바 java 셀프 넘버 함수2단계 (0) | 2020.09.09 |
백준 15596번 자바 java 정수 N개의 합 (0) | 2020.09.09 |
백준 4344번 java 자바 평균은 넘겠지 (2) | 2020.09.08 |
댓글