https://st-lab.tistory.com/54?category=837197
[백준] 1065번 : 한수 - JAVA [자바]
https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌
st-lab.tistory.com
*해당 포스팅은 상단에 링크된 포스팅을 바탕으로 개인 공부 목적을 위해 작성되었으므로 자세한 내용은 위 링크를 확인해 주시기 바랍니다.
등차수열 개념
https://calcproject.tistory.com/438
[수학I] 18. 등차수열의 뜻, 공차, 일반항 (개념+수학문제)
| 같이 보면 좋은 글 📄 [수학I] 수열의 의미 | 등차수열의 의미 등차수열이란, 첫째항부터 같은 수씩 더해지는 수열을 말합니다. 1,3,5,7,9... 의 첫째항은 1입니다. 제2항은 첫째항에 2를 더한 값이
calcproject.tistory.com
- 수열 : 특정한 규칙을 가진 수의 나열
- 등차수열 : 인접한 수의 차이가 같은 수
- 공차 : 공통 차이
- 초항 : 첫 번째 항
한수
각 자리수가 등차수열을 이루는 수
주어진 수가 753일 때
7, 5, 3은 각각 -2씩 일정하게 감소한다. 여기서 공차는 -2이다.
※ 1~9는 비교할 숫자가 없으므로 한수로 본다.
※ 10~99도 공차는 존재하지만 비교할 대상이 없으므로 한수로 본다.
참고한 다른 예제 코드
[백준] 1065번 : 한수 - Java(자바)
이번 문제는 한수를 찾는 문제였습니다. 문제의 설명대로 한수는 각 자리가 등차수열 이루는 수이고 등차수열은 연속된 두개의 수가 일정한 수열을 말합니다. 예를 들어 753 같은 경우 각 자리를
velog.io
import java.util.Scanner;
public class Hansu_1065 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int num = sc.nextInt(); //숫자 N입력
int count = 0; //한수 개수 카운팅
for (int i = 1; i <= num; i++) { //입력 범위가 1이상이므로 1부터 시작.
if (i <= 99) { //1~99까지는 모두 한수이므로 무조건 +1
count += 1;
} else if (i <= 999) { //100부터는 조건을 확인해서 한수 조건을 충족하면 +1
String[] num_str = Integer.toString(i).split("");
//각 자리수를 자정할 문자열 배열 생성.
if ((Integer.parseInt(num_str[1]) - Integer.parseInt(num_str[0]))
== (Integer.parseInt(num_str[2])- Integer.parseInt(num_str[1]))) {
//백의자리 십의자리 일의자리를 각각 a, b, c라고 생각하고
// b-a == c-b 이면 한수이므로 +1
count += 1;
}
}
}
System.out.println(count);
}
}
제출 코드에서는 각 자리수를 나머지, 몫 연산을 사용해서 계산했다.
int hun = i / 100; // 백의 자리
int ten = (i / 10) % 10; // 십의 자리
int one = i % 10; // 일의 자리
'Computer Science > Algorithm' 카테고리의 다른 글
[백준] 1193번 - 분수찾기 (Java) (0) | 2022.09.18 |
---|---|
[JAVA] 알파벳 찾기 (0) | 2022.03.22 |
[JAVA] 셀프 넘버 (0) | 2022.03.09 |
[JAVA] OX퀴즈 (0) | 2022.03.08 |
[JAVA] 나머지 (0) | 2022.03.08 |