본문 바로가기
Computer Science/Algorithm

[JAVA] 한수

by soro.k 2022. 3. 9.

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도 공차는 존재하지만 비교할 대상이 없으므로 한수로 본다.

 

 

참고한 다른 예제 코드

https://velog.io/@tkdeod1234/%EB%B0%B1%EC%A4%80-1065%EB%B2%88-%ED%95%9C%EC%88%98-Java%EC%9E%90%EB%B0%94

 

[백준] 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