본문 바로가기

PS

(15)
[백준/2938번/java] - 설탕 배달 문제를 읽고 딱 든 생각은 최소의 갯수를 구해야하니까 5로 먼저 나누어야겠다고 생각했습니다. 그래서 처음으로 그려본 전체적인 코드의 모습은 아래 사진과 같았습니다! 공통으로 계산하는 부분도 있어서 이 부분은 메소드로 빼고 사용해야겠다~ 라고 생각하고 구현했는데..import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan.nextInt(); int count = 0; int five = N / 5; if(five == 0){ Syste..
[백준/2798번/java] - 블랙잭 import java.util.Scanner; public class boj_2798 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan.nextInt(); int M = scan.nextInt(); int[] list = new int[N]; for(int i = 0; i < N; i++){ list[i] = scan.nextInt(); } int first = 0; int second = 1; int third = 2; int result = 0; while(first < N-2){ int sum = list[first] + list[second] + list[third]; if( s..
[백준/1436번/java] - 영화감독 숌 처음엔 숫자를 직접 입력해서 규칙을 찾아보았는데.. 666,1666,2666,3666,4666,5666,6660~6669,7666,8666,9666 이렇게 한 사이클이 총 19개로 이루어져 있고, 20번째부터는 10666,11666,12666,13666,14666,15666,16660~16669, 17666,18666,19666 이런식으로 증가하는 것을 찾을 수 있다. 그러면 문제는 60666이 나오는 때 부터가 또 새로운 패턴을 가지게 된다. 그래서 생각했던 건, 들어오는 숫자를 19로 나누었을 때 몫이 맨 앞자리는 19로 나눈 몫, 그 뒷자리는 나머지.. 라고 생각을해서 첫 19개는 몫이 0 이고 나머지가 7 미만이면 나머지 자체를 붙이고, 7번째부터는 6660~6669 로 새롭게 부여하고, 그 이후..
[백준/7568번/java] - 덩치 문제에 대해서 먼저 이해를 해보자. 내가 중점을 두고 본 부분은 "만일 자신보다 더 큰 덩치의 사람이 k 명 이라면 그 사람의 덩치 등수는 k+1 이 된다" 이 부분이었다. 처음에 문제를 읽고는 x 좌표 y 좌표를 모두 비교해서 정렬을 해야하나.. 아니면 모든 좌표를 비교해야하나.. 고민을 했는데 위에 저 부분을 읽고 방향성이 잡혔다! 그래서 나온 코드는 아래와 같다. import java.util.Scanner; public class boj_7568 { /** * 1. x 좌표 비교하기 * 2. 비교하는 x 가 크면, y 비교 * 2-1. y 도 크면 자기보다 큰거임 * 2-2. y는 작다면 덩치가 같은거 -> 다음비교로 넘어가기 */ public static void main(String[] arg..
[백준/1676번/java] - 팩토리얼 0의 개수 처음 문제를 읽고 나서 문제를 이해하는데에 조금 시간이 걸렸다! 저게 뭔소린지.. 근데 10! 을 해보면 362800 이 나오는데 맨 오른쪽에 0이 두개! 그래서 2가 출력된다고 이해해보자. 만약 문제가 무슨 소리인지 모르겠어서 찾아봤다면, 아래를 읽어보기 보다는 다시 문제를 살펴보고 오는것이 좋을 것 같다. 첫번째 접근 방식은 다음과 같았다. /** * 1. N 입력받음 * 2. for 문으로 팩토리얼 계산 / 재귀 함수를 이용해서 만들기 * 3. 10으로 나눈 나머지가 0 이 아닐 때 까지 나누고 갯수 세기 */ 왜 10으로 나누게 되었냐면 362800 은 100의 배수이므로 10으로 두번 나눌 수 있고, 그 이후에는 10으로 나누어 떨어지지 않는다는걸 확인할 수 있다. 그래서 while 문을 이용해..
[백준/2292번/java] - 벌집 import java.util.Scanner; public class Main { /** * 1. N 입력받기 * 2. N 이 어디에 속해있는지 확인하기 (while 문으로) * 3. 계산 알고리즘에 따라 계산하기 * 3-1. N 이 1 이면 1출력 * 3-2. 아닌경우 알고리즘에 따라 * 4. 겹수 출력 */ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan.nextInt(); int num = 2; int x = 1; while(true){ if(N == 1){ num = 1; break; } if(N > (6*x)+1){ x += num; num++; }else{ break; } } ..
[백준/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; ..