티스토리 뷰
백준 온라인 저지(BOJ) 1065번 한수
https://www.acmicpc.net/problem/1065
* 사용언어 : java, 자바
1. 문제
어떤 양의 정수 X의 각 자리수가 등차수열을 이루면 그 수를 한수라고 함
입력 N에 대해서 1보다 크거나 같고 N보다 작거나 같은 한수의 개수를 출력
(1 ≤ N ≤ 1000)
2. 풀이
우선 한수에 대해 생각해보겠습니다.
한수가 되려면, 각 자리수가 등차수열을 이뤄야 합니다.
예를 들어 147이라는 수를 생각해보면,
1, 4, 7 세 숫자가 공차가 3인 등차수열이 되므로 147은 한수가 됩니다.
그 밖에 123, 246, 852 ... 과 같은 숫자들도 한수겠죠.
그렇다면 1자리 이거나 2자리 숫자는 어떻게 봐야 할까요?
문제의 입, 출력 예시로 생각해보았습니다.
문제의 입력 예시는 110이고 출력 예시는 99입니다.
여기서 100 부터 110 까지 숫자 중에 한수는 없습니다.
즉, 1부터 99까지를 모두 한수로 본 것입니다.
그런 이유로 저는 한수를 확인하는 함수(checkHanNumber(int number)를 만들 때,
함수의 매개변수는 모두 3자리 숫자라고 가정하고 쉽게 코딩했습니다.
모든 자리수에 대해 가능하도록 일반화하여 코딩할 수도 있겠지만,
불필요한 노력이라 생각하여 이 문제에 맞게 최대한 간단하게 풀었습니다.
풀이에 비해 코드는 간단하니 코드 설명은 생략하겠습니다.
3. 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
if (n < 100) {
System.out.println(n);
} else {
int result = 99;
for (int i = 100; i <= n; ++i) {
result += checkHanNumber(i);
}
if (n == 1000) result--;
System.out.println(result);
}
}
private static int checkHanNumber(int number) {
int num1 = number / 100 % 10;
int num2 = number / 10 % 10;
int num3 = number % 10;
if (num2 * 2 == num1 + num3) return 1;
return 0;
}
}
* 한수가 아닌 1000에 대해 checkHanNumber(1000) 의 결과가 1이므로 result에서 1을 줄여주었습니다.
'개발자 > 문제풀이 (Java)' 카테고리의 다른 글
[백준/BOJ] 1152번 단어의 개수 (java) (6) | 2018.02.04 |
---|---|
[백준/BOJ] 2448번 별찍기 - 11 (java) (6) | 2018.02.01 |
[백준/BOJ] 4673번 셀프 넘버 (java) (2) | 2018.01.23 |
[백준/BOJ] 1110번 더하기 사이클 (java) (6) | 2018.01.22 |
[백준/BOJ] 4344번 평균은 넘겠지 (java) (0) | 2018.01.22 |
- Total
- Today
- Yesterday
- 자료구조
- 호암의마지막꿈
- 긴 자리 덧셈 뺄셈
- 시대예보
- 알고리즘
- 정올
- 영화감상평
- 정세현의통찰
- AdSendse
- 당신도느리게나이들수있습니다
- 삼성전자
- 독서감상평
- 나의첫죽음학수업
- 인간본성불패의법칙
- 자이언트임팩트
- JUNGOL
- 안전운전특약
- 독서 감상평
- 원서잡아먹는영작문
- 세상을 읽는 새로운 언어 빅데이터
- 센터독서클럽
- 문현공
- 나는늘잘해야한다고생각한다
- 자동차보험
- 여가포인트
- 최재천의공부
- 쿠프마케팅
- 긴 자리 곱셈
- 동탄에듀센터
- 동탄에듀센터2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |