본문 바로가기

자바

(4)
[백준/1676번/java] - 팩토리얼 0의 개수 처음 문제를 읽고 나서 문제를 이해하는데에 조금 시간이 걸렸다! 저게 뭔소린지.. 근데 10! 을 해보면 362800 이 나오는데 맨 오른쪽에 0이 두개! 그래서 2가 출력된다고 이해해보자. 만약 문제가 무슨 소리인지 모르겠어서 찾아봤다면, 아래를 읽어보기 보다는 다시 문제를 살펴보고 오는것이 좋을 것 같다. 첫번째 접근 방식은 다음과 같았다. /** * 1. N 입력받음 * 2. for 문으로 팩토리얼 계산 / 재귀 함수를 이용해서 만들기 * 3. 10으로 나눈 나머지가 0 이 아닐 때 까지 나누고 갯수 세기 */ 왜 10으로 나누게 되었냐면 362800 은 100의 배수이므로 10으로 두번 나눌 수 있고, 그 이후에는 10으로 나누어 떨어지지 않는다는걸 확인할 수 있다. 그래서 while 문을 이용해..
[백준/11650번/java] - 좌표 정렬하기 import java.util.Arrays; import java.util.Scanner; public class Main { /** * 1. 첫줄에 입력받은 숫자로 열 개수 정하기 - N * 2. N x 2 배열 만들기 * 3. for 문으로 저장하기 * 4. for 문으로 배열 순회하기 * 4-1. x 좌표를 기준으로 먼저 확인하고 * 4-2. x 좌표가 동일한 경우 y 좌표로 확인하기 * 5. for 문으로 배열 전부 출력하기 */ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan.nextInt(); int[][] arr = new int[N][2]; for(int i = 0; i <..
[백준/1037번/java] - 약수 import java.util.Scanner; public class Main { /** * 1. int[] 배열 몇개 만들지 입력받아서 num 에 저장 * 2. 배열에 저장하기 * 3. for 문으로 배열 돌면서 최대 최소 찾기 * 4. 최대 * 최소 = 정답 */ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int num = scan.nextInt(); int[] arr = new int[num]; for(int i = 0; i < num; i++){ arr[i] = scan.nextInt(); } int min = arr[0]; int max = arr[0]; for(int j =0; j < num; ..
[백준/2163번/java] - 초콜릿 자르기 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan.nextInt(); int M = scan.nextInt(); int total = (N-1) + N*(M-1); System.out.println(total); } } 표를 그릴 때를 생각해보자. 행을 3개 만들고싶으면 줄을 2개만 그리고, 열도 4개를 그리고싶으면 줄을 3개만 그린다. 초콜릿을 자를 때에도 마찬가지다. 예를들어서 3x4 인 초콜릿을 자른다고 가정해보자 두가지 경우가 있을 수 있다 행을 먼저 자르거나 열을 먼저 자르거나 행을 먼저 잘라보자! ..