본문 바로가기
ALGORITHM/푼 문제들&과정

[JAVA] 백준 1065번

by sjs_2215 2019. 3. 3.

문제

한수 개념 이해가 우선. 한수 목록

101도 한수인줄 알았는데 123이 한수임. -1은 안 되나 봄.


첫 번째 시도:

문제점:

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