본문 바로가기

자바77

[백준] 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.
[백준] JAVA 자바 : 단어 수학 (1339번) 문제는 대략 저렇읍니다. 내가 보기엔 직전 문제인 신입 사원이랑 이 문제랑 난이도가 바뀌어야 할 것 같다... 나는 어떻게 해결했냐면, 알파벳은 어차피 다 더해야 하는 수이므로 일단 자릿수만큼 1, 10, 100, 1000, ....으로 할당해서 같은 알파벳끼리 다 더해서 배열에 저장했다. 그리고 그 배열을 처음부터 다시 돌면서 가장 값이 높은 순서대로 9, 8, 7, 6, ..., 1까지 할당해서 곱해준 다음 sum에 다 합쳐서 출력해 주었다. import java.lang.StringBuilder; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arra.. 2024. 3. 22.
[백준] JAVA 자바 : 신입 사원 (1946번) 문제는 대략 저렇다. 요약하자면, 서류 순위와 면접 순위가 동시에 그 누구에게도 뒤쳐지지 않는 사람을 뽑는 문제이다. 실버1은 아니고 골드5정도 될 것 같은... 사고력을 요구했다... 다행히 나는 풀었는데 어떻게 풀었냐면, 정수 배열을 하나 만든 다음, 서류 순위를 배열의 인덱스로 사용하고, 면접 순위를 배열의 값으로 사용했다. 그리고 배열을 1부터 돌면서 현재 제일 순위가 낮은 사람과 비교해서, 그 사람보다 하나라도 높다면 result에 1을 더한다. 즉 이건 그 배열의 값이 이전의 최대값보다 큰 사람은 탈락이라는 뜻이다. 배열의 인덱스로 사용하는 서류 순서는 따로 비교해 주지 않아도 되는데, 인덱스가 면접 순위를 나타내는데 어차피 배열은 인덱스를 1부터 하나씩 늘려가며 돌기 때문에, 배열의 현재 요.. 2024. 3. 22.
반응형