자바썸
자바랑 썸타는중
자바썸

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
자바썸

자바랑 썸타는중

백준 1065. 한수(JAVA)
문제풀이/백준

백준 1065. 한수(JAVA)

2022. 3. 22. 13:15

import java.util.Scanner;

public class Main {
	
	public static void main(String[] arge)  {
		
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		
		int num = Hansu(N);
		System.out.println(num);
		}
	
	public static int Hansu(int N) {
		int cnt = 0; // 한수 개수를 세기 위한 변수
		
		for(int i = 1 ; i <= N; i++) {
			if(i < 100) { // 100 미만은 모두 한수이다.
				cnt++;
			}else if(i >= 100 & i <= 1000) {
				String str = Integer.toString(i); // 자릿수를 뽑아내기위해 String으로 변환
				int[] tmp = new int[str.length()]; // 뽑은 수를 넣기 위한 배열 선언
				for(int j = 0 ; j < str.length(); j++) {
					char ch = str.charAt(j); // 백의 자리부터 뽑아서 
					int num = ch - '0'; // int로 바꿔주고
					 tmp[j] = num; // 배열에 넣는다.
				}
				if((tmp[0] - tmp[1]) == (tmp[1] - tmp[2]) ) { // 배열에 있는 수를 비교해서 같다면
					cnt++; // 개수 ↑
				}
			}
		}
		return cnt; // 총 개수를 반환해준다.
	}
}

○ 문제 요약

한수가 몇 개인지 구해라.

○ 문제 풀이 

풀이에 앞서 한수가 무엇인지 설명이 필요할 듯하다. 123을 예로 설명하면 백의 자리는 1이고 십의 자리는 2 일의 자리는 3이다. 각 자리의 수가 등차수열을 이룬다고 하였으므로 백의 자리에서 십의 자리를 뺀 값과 십의 자리와 일의 자리를 뺀 값이 같다면 등차수열을 이뤄 한수의 조건을 충족한다. 여기서 한 가지 의문점이 생긴다.

바로 자릿수가 한자리인 수와 두 자리인 수는 비교할만한 대상이 없다는 것이다.

그렇다면 한수라고 볼 수 없느냐? 그건 아니다.

이 경우에는 한수라고 보기 때문에 우리는 세 자리 수만 해결하면 된다. 자세한 설명은 소스 코드에 작성했다.

○ 결과

'문제풀이 > 백준' 카테고리의 다른 글

백준 2941. 크로아티아 알파벳 (JAVA)  (0) 2022.03.24
백준 10989. 수 정렬하기 3(JAVA)  (0) 2022.03.23
백준 4673. 셀프 넘버(JAVA)  (0) 2022.03.21
백준 4344. 평균은 넘겠지(JAVA)  (0) 2022.03.19
백준 1260. DFS와 BFS(JAVA)  (0) 2022.03.18
    '문제풀이/백준' 카테고리의 다른 글
    • 백준 2941. 크로아티아 알파벳 (JAVA)
    • 백준 10989. 수 정렬하기 3(JAVA)
    • 백준 4673. 셀프 넘버(JAVA)
    • 백준 4344. 평균은 넘겠지(JAVA)
    자바썸
    자바썸

    티스토리툴바