| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- SVM 투패스 어셈블러
- 백준 9012
- 백준 2751 자바
- 어셈블러
- java 성적산출프로그램
- 백준 한수
- 카카오 맵 api
- 자바 백준 2751
- html
- 백준 1157
- 자바 백준 단어공부
- java 백준
- CSS
- 자바 백준
- 자바 백준 1236번
- java
- 자바 백준 1157
- 투패스 어셈블러
- 백준 2751
- javascript
- 지도 구현
- 자바 백준 9012
- 백준 1065번
- 한수구하기
- SVM어셈블러
- 자바 미니프로젝트
- 자바
- 자바 한수
- 백준 1236번
- 자바 성적산출프로그램
- Today
- Total
Sunny's Coding Diary
자바[JAVA] - 백준 1065번 한수 본문
이번에 풀어본 문제는 백준 1065번 한수구하기이다.


[문제]
정수 X의 각자리를 나누어 그 수들이 등차수열을 이룬다면 그 수는 '한수'이다.어떤 수 n을 입력받아 그 수에 한수가 몇개 존재하는지 구하는 문제이다.
간단하게 문제를 풀이 하자면 어떤 수를 입력받아 자리수를 나누어 나눈 수들이 일정한 덧샘 & 뺄샘이 존재하는 등차수열인지 확인하는 문제이다.
문제에 해당하는 소스코드는 다음과 같다.
[소스코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//백준 한수구하기
public class M1065 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = 0;
int[] num = new int[3];
int count = 0;
int total = 0;
float d;
//정수 입력
n = Integer.parseInt(bf.readLine());
//한수 구하기
for(int i = 1;i <= n;i++) {
if(i < 100) count++;
if(i >= 100) {
total = i;
for(int j = 0;j < 3;j++) {
num[j] = total % 10;
total /= 10;
}
d = ((num[0] - num[2]) / 2.0F);
if(num[1] + d == num[0]) {
count++;
}
if(i == 1000) count -= 1;
}
}
//한수 출력
System.out.print(count);
}
}
[해석]
1. 어떤 수 n을 입력받는다. 그리고 100 미만인 수들은 다 등차수열이다. (한 자리 수는 그 존재로만 하나의 수열이라고 볼 수 있고 두자리 수는 그 두 수의 공차가 반드시 존재하는 수들이기 때문에 100미만의 수들은 모두 등차수열이다.)
ex) 10 ----> 1, 0 공차: -1 / 11 -------> 1, 1 공차: 0 ......
2. 100이상인 수들은 한수인지 확인해줘야한다. 그렇기 때문에 자릿수들을 때어서 한자리 수로 만들어준다.
(num 배열로 저장한다.)
3. 저장했다면 공차구하는 공식을 사용하여 공차 d를 구해준다.
4. 공차를 구했다면 num 배열 1번 인덱스의 값과 공차를 더해서 수열의 마지막항(num[2])과 비교한다. 비교했을 때 동일하다면 한수이다.
5. n이 1000일 경우 공차는 -0.5라고 나오지만 정수형으로 계산했을 땐 0으로 인식한다. 따라서 num[1]과 num[2]이 동일하다고 나오기 때문에 결과값에서 1을 빼준다.
[해결]

[꿈은 크게 가져라, 부서져도 그 조각이 크게]
'JAVA' 카테고리의 다른 글
| 자바[JAVA] - 백준 2751번 수 정렬하기 (0) | 2023.02.26 |
|---|---|
| 자바[JAVA] - 백준 1157번 단어공부 (0) | 2023.02.25 |
| 자바[JAVA] - 백준 1236번 성지키기 (1) | 2023.02.01 |
| 자바[JAVA] - 성적산출프로그램(최종) (0) | 2023.01.13 |
| 자바[JAVA] - 성적산출프로그램 (3) | 2023.01.06 |