한수 개념 이해가 우선. 한수 목록
첫 번째 시도:
문제점:
999까지는 구해지는데
1000은 어떻게 해야할지 모르겠음
package till;
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int input=scan.nextInt();
int total=0;
String input2;
int check;
//1부터 99는 무조건 한수
if(input<100){
System.out.println(input);
}
else {//100부터 999 계산
check=100;
total=99;
while(check<=input){
input2=Integer.toString(check);
int one=input2.charAt(0)-'0';
int two=input2.charAt(1)-'0';
int three=input2.charAt(2)-'0';
int left=three-two;
int right=two-one;
//System.out.println("검사중"+check);
//System.out.println("3-2: "+left);
//System.out.println("2-1: "+right);
if(left==right){
total++;
}
check++;
}
System.out.println(total);
}
}
}
두 번째 시도:
문제점:
1000은 어떻게 구해야하는지 모르겠음
함수로 나누어서 풀기로 함
package till;
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int input=scan.nextInt();
int check;
//1부터 99는 무조건 한수
if(input<100){
System.out.println(input);
}
else if(input<999){//100부터 999 계산
System.out.println(hansu(input));
}
else{
System.out.println(hansu(999));
}
}
private static int hansu(int x){
int check=100;
String input2;
int total=99;
while(check<=x){
input2=Integer.toString(check);
int one=input2.charAt(0)-'0';
int two=input2.charAt(1)-'0';
int three=input2.charAt(2)-'0';
int left=three-two;
int right=two-one;
//System.out.println("검사중"+check);
//System.out.println("3-2: "+left);
//System.out.println("2-1: "+right);
if(left==right){
total++;
}
check++;
}
return total;
}
}
세 번째 시도:
문제는 맞음
문제점:
야매 방식이라 너무 찔려서 함수 리턴값 바꿔서 풀어봄.
package till;
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int input=scan.nextInt();
int check;
int answer=0;
//1부터 99는 무조건 한수
if(input<100){
System.out.println(input);
}
else if(input<999){//100부터 999 계산
answer=99;
for(int i=100;i<=input;i++){
answer+=hansu(i);
}
System.out.println(answer);
}
else{
answer=99;
for(int i=100;i<=input;i++){
answer+=hansu(i);
}
System.out.println(answer);
}
}
private static int hansu(int x){
String input2;
input2=Integer.toString(x);
int one=input2.charAt(0)-'0';
int two=input2.charAt(1)-'0';
int three=input2.charAt(2)-'0';
int left=three-two;
int right=two-one;
//System.out.println("검사중"+check);
//System.out.println("3-2: "+left);
//System.out.println("2-1: "+right);
if(left==right){
return 1;
}
if(x>999){
input2=Integer.toString(x);
one=input2.charAt(0)-'0';
two=input2.charAt(1)-'0';
three=input2.charAt(2)-'0';
int four=input2.charAt(3)-'0';
left=three-two;
right=two-one;
int more=four-three;
//System.out.println("검사중"+check);
//System.out.println("3-2: "+left);
//System.out.println("2-1: "+right);
if(left==right&&right==more){
return 1;
}
}
return 0;
}
}
'ALGORITHM > 푼 문제들&과정' 카테고리의 다른 글
[JAVA] 백준 8958번 (0) | 2019.03.09 |
---|---|
[JAVA] 백준 1110번 (0) | 2019.03.03 |
[JAVA] 백준 4344번 (0) | 2019.02.27 |
[JAVA] 백준 4673번 (0) | 2019.02.26 |
[JAVA] 백준 10817번 (0) | 2019.02.01 |
Comments