2745
진법 변환

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String N = scanner.next(); // B진법 수
        int B = scanner.nextInt(); // 진법 (2 ≤ B ≤ 36)

        // B진법 -> 10진법 변환
        int decimalValue = 0;
        int power = 1; // 현재 자리의 B^i 값을 나타냄

        // N의 각 자리값을 뒤에서부터 처리
        for (int i = N.length() - 1; i >= 0; i--) {
            char currentChar = N.charAt(i);

            // 숫자면 해당 값을 가져옴 ('0' -> 0, '1' -> 1, ..., '9' -> 9)
            if (Character.isDigit(currentChar)) {
                decimalValue += (currentChar - '0') * power;
            }
            // 알파벳이면 A~Z를 10~35로 변환
            else {
                decimalValue += (currentChar - 'A' + 10) * power;
            }

            power *= B; // 자리값 갱신
        }

        System.out.println(decimalValue);
    }
}
11005 진법 변환 2
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long N = scanner.nextLong(); // 10진법 수
        int B = scanner.nextInt();   // 변환할 진법 (2 ≤ B ≤ 36)

        // 결과를 저장할 StringBuilder
        StringBuilder result = new StringBuilder();

        // 10진법 수를 B진법으로 변환
        while (N > 0) {
            long remainder = N % B; // 나머지 계산
            if (remainder < 10) {
                // 0~9는 숫자로 추가
                result.append((char) ('0' + remainder));
            } else {
                // 10 이상은 A~Z로 변환
                result.append((char) ('A' + (remainder - 10)));
            }
            N /= B; // 몫으로 업데이트
        }
        System.out.println(result.reverse());
    }
}
2720 세탁소 사장 동혁
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int T = scanner.nextInt();

        // 각 테스트 케이스 처리
        for (int t = 0; t < T; t++) {
            int cents = scanner.nextInt(); // 거스름돈 (센트 단위)
            // 동전 개수 계산
            int quarters = cents / 25;
            cents %= 25;

            int dimes = cents / 10;
            cents %= 10;

            int nickels = cents / 5;
            cents %= 5;

            int pennies = cents; // 남은 금액은 페니로 모두 처리

            System.out.println(quarters + " " + dimes + " " + nickels + " " + pennies);
        }
    }
}
2903 중앙 이동 알고리즘
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        int N  = scanner.nextInt();

/*        변의 길이 계산 (숫자의 거듭제곱을 계산)
        double Math.pow(double base, double exponent);
	    base: 밑 (거듭제곱의 기반이 되는 값).
	    exponent: 지수 (몇 제곱인지 나타내는 값)*/

        int length = (int) Math.pow(2, N) + 1;

        System.out.println(length * length);


    }
}

1193
분수찾기
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        int X = scanner.nextInt();

        // 대각선 번호 찾기
        int diagonal = 0; // 대각선 번호
        int sum = 0; // 대각선 이전까지의 총 개수 합
        while (sum < X) {
            diagonal++;
            sum += diagonal;
        }

        // 대각선 내에서 X의 위치
        int indexInDiagonal = X - (sum - diagonal);

        // 분수 계산
        int numerator, denominator;
        if (diagonal % 2 == 0) {
            // 짝수 대각선: 1/n, 2/(n-1), ..., n/1
            numerator = indexInDiagonal;
            denominator = diagonal - indexInDiagonal + 1;
        } else {
            // 홀수 대각선: n/1, (n-1)/2, ..., 1/n
            numerator = diagonal - indexInDiagonal + 1;
            denominator = indexInDiagonal;
        }

        // 결과 출력
        System.out.println(numerator + "/" + denominator);
/*

        (1 ,1)
        (1, 2) (2, 1)
        (3, 1) (2, 2) (1, 3)
        (1, 4) (2, 3) (3, 2) (4, 1)
        (1, 5) (2, 4) (3, 3) (4, 2) (5, 1)
*/

    }
}

2869
달팽이는 올라가고 싶다
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int A = scanner.nextInt();
        int B = scanner.nextInt();
        int V = scanner.nextInt();

        // 정상에 도달하기 위한 총 일수 계산
        int days = (int) Math.ceil((double) (V - A) / (A - B)) + 1;
        System.out.println(days);
    }
}

'Algorithm' 카테고리의 다른 글

[백준] 약수, 배수와 소수  (0) 2024.12.02
[백준] 2차원 배열  (1) 2024.11.29
[백준] 심화 1  (0) 2024.11.29
[백준] 문자열  (0) 2024.11.26
[백준] 1차원 배열  (0) 2024.11.25