본문 바로가기

백준 문제 풀이53

(#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.
(#2563 Java) 색종이 문제 이해 문제를 이해하는 것은 쉬웠다. 첫 줄에 색종이의 개수가 입력되고, 색종이의 넓이는 100으로 정해져있기 때문에, (색종이의 개수 * 100) - 겹치는 부분 으로 구하면 될 것이라고 생각했다. 그럼 중복된 부분의 넓이를 어떻게 구하면 될까? 2차원 배열을 boolean 타입으로 만들어준 후, 이미 체크가 된 부분이면 중복된 부분이라고 생각하면 된다. 그럼 차근차근 코드를 작성해보자. 문제 해결 우선 첫 번째 줄에 입력되는 색종이 개수를 입력받은 후 변수에 저장해준다. Scanner in = new Scanner(System.in); int paperCount = in.nextInt(); //색종이 개수 그 이후 입력받을 x,y좌표에 해당하는 변수와, 중복되는 부분을 저장해줄 변수를 선언하고 초.. 2024. 2. 24.
(#10798 Java) 세로읽기 문제 이해 총 다섯 줄을 입력받고, 한 줄에는 최대 15개의 문자를 입력받을 수 있다. 이를 세로로 읽어 공백없이 출력해주면 된다. 만약 중간에 빈 문자열이 존재하면, 이는 출력하지 않고 다음 문자를 이어서 출력하면 된다. 문제 해결 우선 5행의 최대 15개의 열을 가진 2차원 배열을 선언해준다. char[][] str = new char[5][15]; 입력 받은 문자열들을 배열에 저장하기 위해 스캐너로 입력받은 문자들을 저자해준다. 이 때 밖의 for문, 즉 행을 뜻하는 반복문은 5번 반복해주면 되고, 안쪽의 for문은 한 줄에 입력받은 문자열의 길이만큼 반복하며 입력받으면 된다. Scanner in = new Scanner(System.in); String input = ""; for (int i =.. 2024. 2. 24.
반응형