백준 1065. 한수 (Java)알고리즘/백준2023. 7. 20. 01:01
Table of Contents
반응형
문제 링크
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
풀이코드
import java.util.*;
public class Main {
static int answer;
/**
* 입,출력
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
print(solution(n));
}
private static int solution(int n) {
int answer = 0;
for(int i=1; i<=n; i++) {
char[] arr = String.valueOf(i).toCharArray();
int len = arr.length;
boolean flag = true;
if(len >= 2) {
int gap = arr[1] - arr[0];
for(int j=2; j<len; j++) {
if (arr[j] - arr[j-1] != gap) flag = false;
}
}
if (flag) answer++;
}
return answer;
}
/**
* print() 구현
*/
private static void print(String str) {
System.out.println(str);
}
/**
* print() 구현
*/
private static void print(int number) {
System.out.println(number);
}
}
❗ 풀이 방법
for(int i=1; i<=n; i++) {
char[] arr = String.valueOf(i).toCharArray();
int len = arr.length;
boolean flag = true; //한수 판별 변수
if(len >= 2) {
int gap = arr[1] - arr[0];
for(int j=2; j<len; j++) {
if (arr[j] - arr[j-1] != gap) flag = false;
}
}
if (flag) answer++;
}
- i를 1부터 n까지 증가시켜주면서, i를 String 타입으로 바꾼 다음 char 배열로 변환해준다.
- flag를 true라고 선언한 뒤, char 배열의 길이가 2 이상이라면 gap을 구하여 char 배열을 2부터 탐색하여 전부 gap이 일정한지 탐색해본다.
- gap이 다르다면 flag를 false로 바꿔주고 탐색을 멈춘다.
- 무사히 탐색을 마쳤다면 flag는 그대로 true 상태일 것이므로(i는 한수라는 뜻) answer를 증가시켜준다.
🙂 새로 알게된 점
- 1이상 N 이하의 모든 수들에 대하여 한수인지 판별하는 로직만 짤 수 있다면 쉽게 풀 수 있는 문제였다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 2178. 미로 탐색 (Java) (0) | 2023.07.20 |
---|---|
백준 1260. DFS와 BFS (Java) (0) | 2023.07.20 |
백준 2747. 피보나치 수 (Java) (0) | 2023.07.20 |
백준 1018. 체스판 다시 칠하기 (Java) (0) | 2023.07.20 |
백준 2503. 숫자 야구 (Java) (0) | 2023.07.20 |
@Caffeine Developer :: 개발스토리
개발을 하며 만났던 문제들과 해결 과정, 공부한 내용 등을 기록합니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!