Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 |
Tags
- mysql
- 리액트
- 라우터
- ELB
- AWS
- 브루트포스
- EC2
- 동적프로그래밍
- react
- 완전탐색
- Algorithm
- nodejs
- sort
- 서버구축
- 알고리즘
- java
- 스터디
- Router
- 자료구조
- 탐욕법
- BFS
- 정렬
- 토이프로젝트
- 백준알고리즘
- Spring Boot
- 백준
- url parsing
- 다익스트라 알고리즘
- EventListener
- spring
Archives
- Today
- Total
공부하는 블로그
Baekjoon | Q.1065 - 한수 본문
1065번: 한수
어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
정수 X의 자리수가 등차수열을 이루는 수를 한수라고 한다. 주어진 정수 N에 대해서 1보다 크거나 같고 N보다 작거나 같은 한수의 개수를 출력하는 문제이다.
import java.util.Scanner;
public class Main {
// 한수인지 아닌지 판별하는 함수
static boolean hansu(int n) {
String num = n + "";
int len = num.length();
// 한자리 수일 경우 (한수가 맞음)
if(len == 1) {
return true;
}
int[] numArr = new int[len]; // 각각의 자리수를 저장해둘 배열
int[] diff = new int[len - 1]; // 자리수간의 차이를 저장해둘 배열
boolean result = true; // 한수인지 아닌지 리턴해줄 변수
// 각각의 자리수를 charAt을 이용하여 배열에 저장
for (int i = 0; i < len; i++) {
numArr[i] = Integer.parseInt(num.charAt(i) + "");
}
// 자리수간 차이를 배열에 저장
for (int i = len - 1; i > 0; i--) {
diff[i-1] = numArr[i] - numArr[i-1];
}
// 자리수간의 차이가 하나밖에 없을 경우(두 자리수인 경우)
if(diff.length == 1) {
return true;
}
// 차이를 하나하나 비교하여 등차수열인지 판별
for (int i = 0; i < diff.length - 1; i++) {
if(diff[i] != diff[i+1]) { // 하나라도 차이가 다르다면
result = false; // 한수가 아님
break; // 반복문을 빠져나옴
};
}
return result;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
int count = 0;
for (int i = 1; i <= n; i++) {
if(hansu(i)) count++;
}
System.out.println(count);
}
}
한수인지 아닌지 구분하는 함수를 만들었다. n이 한 자리수이거나 두 수의 차이가 하나만 나올 경우(n이 두 자리수) 무조건 true를 반환하도록 하였다. 그 이외에는 자릿수간의 차이를 배열에 저장하여 반복문을 이용하여 차례차례 비교해주었다. 하나라도 같지 않을 경우 false를 반환하도록 하였다.
'알고리즘 공부' 카테고리의 다른 글
Baekjoon | Q.1316 - 그룹 단어 체커 (0) | 2019.12.23 |
---|---|
Baekjoon | Q.5622 - 다이얼 (0) | 2019.12.23 |
Baekjoon | Q.15596 - 정수 N개의 합 (0) | 2019.12.22 |
Baekjoon | Q.4344 - 평균은 넘겠지 (0) | 2019.12.21 |
Baekjoon | Q.2577 - 숫자의 개수 (0) | 2019.12.20 |