본문 바로가기

컴퓨터 공학99

[백준] JAVA 자바 : 덩치 (7568번) 각 사람들의 덩치를 구해서, 순위를 책정하는 문제이다.여기서 덩치가 더 크다는 뜻은 몸무게가 더 무겁고 키가 더 크다는 것이다 (같은 건 포함되지 않음) 그래서 내가 생각한 로직은,우선 모든 사람의 몸무게와 키를 입력받은 다음그 배열들을 모두 돌면서 자신보다 덩치가 더 큰 사람들의 수를 구해서(이중 for문)자신보다 덩치가 더 큰 사람들의 수 + 1을 순위로 출력하는 것이다. 브루트포스는... 진짜 공부 많이 해야 겠다...사실 이 문제도 문제를 제대로 이해 못 해서 거의 40분이나 걸려서 풂...ㅋㅋㅋㅋ 진짜 실화야?실버 단계는 큰 고민 안 하고 풀었었는데... 브루트포스는 실버만 돼도 어렵게 느껴지네.... import java.io.BufferedReader;import java.io.IOExcep.. 2024. 5. 25.
[백준] JAVA 자바 : 체스판 다시 칠하기 (1018번) 무작위로 칠해져 있는 체스판에서, 가장 적게 색을 다시 칠할 수 있는 8x8 체스판을 오려낼 때의 다시 칠하는 수를 출력하는 문제이다. 나는 어떤 로직을 구상했냐면, 주어진 체스판에서 기준점을 잡는다. 이 기준점의 가로와 세로는 각각 0 ~ N-8, 0 ~ M-8까지의 범위를 가진다. (그 이상을 넘어가면 범위가 초과되므로 그 점을 기준으로 하는 8x8 체스판을 오려낼 수 없기 때문) 그리고 그 기준점을 모두 돌면서, 각 기준점 별로 오른쪽으로 8칸, 아래로 8칸을 잘라 다시 칠해야 하는 개수를 구한다.이 때에도 기준점이 B인지 W인지 두 가지 경우의 수를 모두 따져 보아야 한다. 이렇게 작성하긴 했는데... 사실 이 간단한 문제 하나 가지고 1시간 30분을 고민했다...브루트포스 왜이렇게 어렵지?? 모.. 2024. 5. 24.
[백준] JAVA 자바 : 한수 (1065번) 1보다 크고 N보다 작거나 같은 한수의 개수를 출력하는 문제이다.그런데 풀다 보면서 느끼는 건데... 완전 탐색이 그리디보다 어려운 것 같다... 아직 얼마 안 풀어봐서 그런가...?ㅋㅋㅋ전부를 탐색해야 해서 은근 고려할 게 많은 느낌...? 여튼, 난 어떻게 구현했냐면1~99까지는 모두 등차수열이다. 당연히 모든 자릿수의 차이가 똑같으니까! 그럼 우리가 구해야할 부분은 100~1000 사이의 수이다.일의자리 수와 십의자리 수의 차이를 먼저 구한 후(diff), 나머지 자릿수를 돌면서 두 자릿수의 차이가 diff와 모두 같다면 한수로 저장한다. 만약 한 자리라도 틀리게 된다면 그 수는 한수가 아니게 된다. 1000까지 모두 검사한 후, 1부터 N까지 돌면서 한수의 개수를 출력한다. import java... 2024. 5. 18.
[백준] JAVA 자바 : 셀프 넘버 (4673번) 백준을 풀면서 처음 만난 완전탐색 문제인데... 생각보다 얕봤다가 은근 애먹었던 문제...겨우 실버 5인데... 이런 문제에 헤맸다니 진짜 앞길이 막막하다... 여튼 어떻게 풀었냐면, 1부터 10,000까지 모든 수를 돌면서 생성자가 되는 수를 모두 체크한다. 생성자가 되는 수는 list에 1로 표시해 두고, 셀프 넘버는 그대로 0으로 둔다. 그리고 맨 마지막에 이 리스트를 전부 돌면서 0인 인덱스들만 출력한다. import java.io.IOException;public class SelfNumber { public static void main(String[] args) throws IOException { int[] list = new int[10001]; // 1부터.. 2024. 5. 17.
[백준] JAVA 자바 : 수 묶기 (1744번) 현재 수가 양수인지 음수인지 나누어서 판단해야 한다. 현재 수가 양수인 경우, 1은 곱하지 않고 더해준다 2 이상의 수는 차례로 곱해서 합한다.현재 수가 음수인 경우, -1 이하의 수는 모두 곱한 후 더해준다. 0은 음수로 포함시켜서, 가장 절댓값이 낮은 음수는 0과 곱해 0으로 만들어준다. 골드4 치고는 조금 쉽다고 느꼈던...? 문제였다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Collections;import java.util.PriorityQueue;public class TyingNumber { public static int stoi(Str.. 2024. 5. 6.
[백준] JAVA 자바 : 보석 도둑 (1202번) 문제는 대략 이렇고, 제가 지금 시간이 없어서 대략 어떻게 풀었는지만 간단히 쓰자면 우선 보석의 정보를 2차원 배열로 입력받고, 무게를 기준으로 오름차순 정리한다. 그리고 가방의 수용량을 배열로 입력받고 오름차순 정리한다. 가방 수용량이 담긴 배열을 처음부터 돌면서, 해당 가방이 담을 수 있는 수용량까지의 무게를 가진 모든 보석들의 가치를 (높은 값이 우선인)우선순위 큐에 담는다. 다 담았으면 그 우선순위 큐에서 poll()해서 나오는 값이 해당 수용량에서 가질 수 있는 최고 가치의 보석이므로 sum에 더해 주며, 이 과정을 가방 개수만큼 반복한다. import java.lang.StringBuilder; import java.io.BufferedReader; import java.io.IOExcepti.. 2024. 3. 22.
반응형