출처 : https://www.acmicpc.net/problem/1065
소스코드
public class Q1065 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); // 1<= N <=1000 int count = 0; for(int i=1; i<=n; i++) { if(isHansu(i)) { count++; } } System.out.print(count); } public static boolean isHansu(int n) { // 1자리, 2자리 수는 한수 if(n<100) { return true; } //1000은 한수 아님 if(n==1000) { return false; } // 100~999 한수 판별 int[] arr = new int[3]; for(int i=0; i<3; i++) { arr[i] = Integer.toString(n).charAt(i)-'0'; } if(arr[0]-arr[1] == arr[1]-arr[2]) { return true; }else { return false; } } }
일단 99 이하의 자연수는 모두 등차수열을 이루고, 1000은 등차수열이 아니므로 따로 처리를 해주고,
100 부터 999까지는 배열에 숫자를 하나씩 넣어주고 그 차이를 비교하는 식으로 했습니다.
다른 분들의 코드를 보니 배열에 넣고 막 하나씩 뽑아서 차이를 구하는 방법보다
직접 숫자를 나누어서 해결하는 식을 쓰는 분들이 많았습니다.
왜 이런걸 생각 못했징
'짱구 굴리기 (Q) - ' 카테고리의 다른 글
[프로그래머스] 프린터 (0) | 2019.04.02 |
---|---|
[백준 11866] 조세퍼스 문제 0 (0) | 2019.04.01 |
[백준 1920] 수 찾기 (0) | 2019.01.25 |
[백준 1012] 유기농 배추 (0) | 2019.01.25 |
[백준 1475] 방 번호 (0) | 2019.01.25 |