본문 바로가기

Sort6

[자바] 백준 21740 - 도도의 수학놀이 (java) 문제 : boj21740 필요 알고리즘 개념 그리디, 정렬, 문자열 그리디로 풀 수 있는 문제이다. 다만 플래문제답게 세세하게 예외를 생각해봐야하고, 구현이 좀 까다로울 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 사실 이 문제가 플래인 이유는 '단 한 번, 한 수를 두 번 사용할 수 있다.' 이것 때문이다. 아마 저 조건이 없었으면 실버급이었을 것 같다. 그러므로 우선 '단 한 번, 한 수를 두 번 사용할 수 .. 2023. 1. 11.
[자바, 코틀린] 백준 17390 - 이건 꼭 풀어야 해! (java, kotlin) 문제 : boj17390 필요 알고리즘 개념 누적 합 (prefix sum) 연속된 범위의 합을 O(1)로 구하기 위해 누적 합을 사용한다. 누적 합에 대한 개념이 있어야 풀 수 있다. 정렬 정렬이 무엇인지, 자바나 코틀린으로 정렬은 어떻게 하는지 알아야 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. 비내림차순으로 정렬해야 한다. 비내림차순이 생소할 수 있다. 그냥 이 문제에서는 오름차순이라고 생각하면 된.. 2022. 8. 8.
백준 11004 자바 - K번째 수 (boj 11004 java) 문제 : boj11004 정렬만 할 줄 안다면 바로 풀 수 있는 날먹문제. 정렬 후 K-1 인덱스에 있는 값을 출력해주면 된다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { private void solution() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(.. 2022. 4. 11.
백준 16496 자바 - 큰 수 만들기 (boj 16496 java) 문제 : boj16496 당연한거지만 앞에 올수록 더 전체값이 커질만한 순서대로 정렬한 후, 출력해주면 되는 문제이다. 그 정렬 규칙만 잘 정하면 된다. 케이스1 - 예를들어 9와 89999999가 있다. 직관적으로 자리수와 정렬 규칙은 관계가 없음을 알 수 있다. 둘 중 작은 길이의 숫자까지 비교해서 그 중 다른 숫자가 있다면 쉽게 규칙을 정할 수 있다. 이 경우 9를 먼저 놓는것이 당연히 이득이다. 케이스2 - 그럼 98와 98999이 있다면 어떨까? 직관적으로 98999를 먼저 두는 것이 이득임을 알 수 있다. 이 경우는 '케이스1'로는 판단할 수 없는 경우이다. 그렇다면 자리수가 다르면서, 둘 중 작은 자리수까지 비교해도 비교가 안되는 경우를 어떻게 판단할지가 관건임을 알 수 있다. 내 경우 규칙.. 2022. 3. 30.
백준 23394 자바 - Haja Ordenação (BOJ 23394 JAVA) 문제 : boj23394 Brute force로 생각하기 쉽지만, 사실 이 경우 10^5C2 만큼 판단해야 할 것이므로 시간내에 통과할 수 없다. 아이디어만 잘 떠올린다면 아주 간단하게 풀 수 있다. 사실 동일한 색상 2개를 고르고 교환하는 부분을 직접 할 필요가 없다. 중요한건 최종적으로 정렬된 순서로 만들 수 있냐이므로, 처음 입력으로 들어왔던 색상의 순서와 시퀀스만 가지고 정렬한 순서의 색상이 동일하다면 실제 색상 2개를 고르고 서로 교환하는 부분은 어떻게든 가능할테니 대충 퉁칠 수 있는 부분이 된다. 예를들어 예제 입력1과 2는 다음과 같다. 처음 입력으로 들어온 색상과, 시퀀스를 기준으로 정렬된 색상의 순서가 서로 다르다면 N, 동일하다면 Y를 출력해주면 된다. 코드 : github import.. 2022. 3. 1.
백준 14729 자바 - 칠무해 (BOJ 14729 JAVA) 문제 : boj14729 문제 자체는 단순히 모두 입력받은 후 오름차순으로 정렬해서 처음 7개만 출력하면 되는 아주 간단한 문제이다. 다만 생각할 부분이 좀 있는데, 애초에 스페셜 저지 문제가 아니므로(별도의 채점 로직 없이 단순히 입력을 주고 출력 나온걸 정답과 비교하는 형태) 무조건 입력받은 형태 그대로 출력해야 한다. 그렇다면 사실 String 그대로 받고 비교하는게 맞긴하다. 왜냐하면 무조건 소수점 3자리까지 입력으로 들어온다고 조건을 주지 않았기 때문이다. 하지만 이 경우 자바로는 String으로 N개를 입력받는 것 자체가 메모리 초과가 나게 된다. 결론적으로 정석대로(String 그대로 받기) 자바로 풀기 위해서는 모두 입력받고 정렬하면 안되고, 별도로 가장 낮은 값 7개를 찾는 로직을 세워야.. 2022. 2. 26.