실버 IV
https://www.acmicpc.net/problem/1065
📌 문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
📤 입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
📥 출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
💡 접근방식
숫자를 String으로 변환하여 문자로 하나씩 자르고 각 자리수를 arr에 저장한다.
예를 들어, 114는 arr에 [1, 1, 4] 와 같이 저장된다.
그리고 등차수열인지 판별할 때는 arr[0] - arr[1]과 arr[1] - arr[2]가 같은지 다른지로 판별하였다.
예를 들어 114에서 arr[0] - arr[1] = 1 - 1 = 0이고, arr[1] - arr[2] = 1 - 4 = 3이다.
등차수열은 값이 일정해야 하는데 다르므로 114는 한수가 아니다. 이와 같이 한수를 판별하는 코드를 작성하였다.
💻 코드
package 브루토포스;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class SLIVER4_BJ1065 {
/*https://www.acmicpc.net/problem/1065
한수
*/
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//변수 설정
ArrayList<Integer> arr = new ArrayList<>();
int count = 0;
//N입력
int N = Integer.parseInt(br.readLine());
for(int i = 1; i <= N; i++){
//문자열로 변환
String num = String.valueOf(i);
for(int j = 0; j < num.length(); j++){
//문자열을 하나씩 문자로 자르기
char charNum = num.charAt(j);
//문자를 int로 변환
int intNum = Character.getNumericValue(charNum);
//arr배열에 각 자리 수를 추가
arr.add(intNum);
}
//등차수열인지 판별하는 변수 설정
boolean check = false;
for(int j = 0; j < arr.size() - 2; j++){
//등차수열인지 판별(등차수열이 아니면 check를 true로 변환)
if(arr.get(j) - arr.get(j + 1) != arr.get(j + 1) - arr.get(j + 2)){
check = true;
}
}
//arr초기화
arr.clear();
//한수가 아니면(check = true) 반복문 처음으로 이동, 한수면 count증가
if(check){
continue;
}
else {
count++;
}
}
//결과 출력
System.out.println(count);
}
}
📝 NOTE
전에는 char를 int로 변환할 때 char - string - int 단계를 거쳐 변환했다.
즉, charAt() - String.valueOf() - Integer.parseInt()로 변환하였다.
이번에는 char를 int로 바로 변환하는 Character.getNumericValue()를 이용하였다.
'💻 Algorithm > Bruteforcing(브루트포스)' 카테고리의 다른 글
[JAVA] 백준 7568 - 덩치 (0) | 2024.01.19 |
---|---|
[JAVA] 백준 1018 - 체스판 다시 칠하기 (0) | 2024.01.18 |
[JAVA] 백준 4673 - 셀프 넘버 (0) | 2024.01.16 |
[JAVA] 백준 2798 - 블랙잭 (0) | 2024.01.16 |
[JAVA] 백준 1436 - 영화감독 숌 (0) | 2023.10.31 |