알고리즘 연습 심화 - 2

조재형·2023년 5월 23일
0

1번 문제 (https://www.acmicpc.net/problem/1110)

public class Prac1 {
    public static int Solution( int n){
        int answer = 0;
        int a = 0, b = 0, k = n;


        while(true){
            a = k / 10; // 10의 자리 n < 10 a == 0
            b = k % 10;
            k = a + b;
            k = b * 10 + k % 10;

            answer++;
            if( k == n)
                break;
        }

        return  answer;
    }

    public static void main(String[] args) {
        System.out.println(Solution(1));
    }
}
/*
 1. n 10의 자리 더하기 n 1의자리 = a
 2. n의 1의 자리 a의 1의 자리 = 새로운 수
 3. 처음 수와 새로운 수가 같으면 break;
 */

2번 문제 (https://www.acmicpc.net/problem/18258)

public class Prac3 {
    public static void main(String[] args) {
        int x1 = 1, y1 = 1, r1 = 1;
        int x2 = 1, y2 = 1, r2 = 5;
        double k= 0;
        int n = 0;


        k = Math.pow(x1-x2, 2) + Math.pow(y1-y2, 2);
        k = Math.sqrt(k);


        if(Math.abs(r1 - r2) < k && k < r1+ r2){
            n = 2;
        }else if( k == r1 + r2){
            n = 1;
        }else{
            n = 0;
        }


        System.out.println(n);
    }
}


//(x - x1)^2 + (y - y1)^2 = r1^2
//(x - x2)^2 + (y - y2)^2 = r2^2
//서로 접하는 좌표의 갯수

오늘 풀 문제는 6문제 였는데, 배열의 스택, 큐를 쓰는 등의 문제는
아직 지식이 부족해서 풀지 못하였다.
좀 더 공부하고 배워서 익숙해 진 후 다시 도전할 예정이다.

아직 Math 함수도 오늘 있다는 것을 알고 찾아 쓴거라 익숙하지 않아 이해는 완벽히 하지는 못했지만
손에 익는다면 정말 편한 함수가 될 것이라 생각한다.

profile
안녕하세요.

0개의 댓글