본문 바로가기

백준 문제 풀이/일반 수학 14

(#2903 Java) 중앙 이동 알고리즘 문제 이해 규칙을 찾는 게 어려웠던 문제이다. 한 변의 점의 개수가 2의 N제곱에서 1을 더한 값이 되고, 총 점의 개수는 한 변의 점의 개수의 거듭 제곱이 된다. 문제 해결 먼저 N을 입력 받는다. Scanner in = new Scanner(System.in); int N = in.nextInt(); 입력받은 N을 이용하여 2의 거듭제곱에 1을 더한 값을 계산하고, 그 값을 제곱하여 최종 result 변수에 담아 출력하면 된다. 이 때 Math.pow 메서드의 반환 타입이 double이기 때문에 int형으로 형변환을 해주었다. int result = ((int) Math.pow(Math.pow(2, N) + 1, 2)); System.out.println(result); 참고로 제곱을 구하는 Math.. 2024. 2. 27.
(#2720 Java) 세탁소 사장 동혁 문제 이해 우리나라 돈으로 이해해보자. 만약 1350원이 있으면, 1350을 500으로 나눈 몫이 2이므로 500원짜리는 2개를 거슬러줄 것이고, 나머지 350은 다음 단위인 100으로 나눈 몫으로..그 나머지는 그 다음 단위로.. 이런식으로 나가면 된다. 그리고 이 문제에서는 그 몫을 차례대로 출력하면 된다. 문제 해결 우선 테스트 케이스와를 입력받을 스캐너 객체를 생성해주고, 각각 거스름돈의 단위 변수를 만들어준다. Scanner in = new Scanner(System.in); int c = in.nextInt(); int q = 25; int d = 10; int n = 5; int p = 1; 테스트 케이스의 개수만큼 반복할 반복문을 만들어준다. 돈을 입력받고, 큰 단위부터 나누어 몫을 출력시.. 2024. 2. 27.
(#11005 Java) 진법 변환 2 문제 이해 이 문제는 바로 전에 푼 진법 변환1과 정확히 반대되는 문제이다. 이전 문제는 B진법을 10진수로 변환해서 출력하는 문제였는데.. 이번엔 10진수를 B진수로 변환해 출력하면 된다. 한 블로그에서 변환 방법을 그림으로 설명해놓은 것을 보았는데, 코드로 푸는 데에도 이해가 쉬워 나도 해보았다. 문제 해결 N과 B를 입력받을 스캐너 객체를 만들어준다. Scanner in = new Scanner(System.in); int N = in.nextInt(); int B = in.nextInt(); 그리고 최종적으로 출력할 나머지들을 저장해줄 리스트도 선언해준다. 이 리스트를 선언해줄 때 주의해야할 점은 'Character' 타입으로 만들어주어야 한다는 점이다!! ArrayList list = new A.. 2024. 2. 26.
(#2745 Java) 진법 변환 문제 이해 나는 아직도 진법 계산을 정확히 이해하고 있지 못 한 것 같다.. 한 번 제대로 이해할 필요가 있어보인다.. 일단 어떤 진수든 10진수로 바꾸는 방법은 동일하다. ( 각 자리의 10진수 숫자 * 진수의 각 자리수 제곱을 모두 더한 값 : 2진수 1011이면 >> 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 9 ) 내가 아직도 헷갈리고 있는 부분은 ASCII 코드의 값과 정수의 관계이다. 숫자를 그대로 출력할 때는 - '0'를 하고 저장해줘야 한다. WHY?? '0'의 ASCII 코드 값은 48이며, '1'은 49, '2'는 50, ..., '9'는 57이다. 따라서 숫자 문자를 정수로 변환하려면 해당 문자의 ASCII 코드에서 '0'의 ASCII 코드 값을 빼주면 된다. '5'의 .. 2024. 2. 26.
반응형