정렬4 [백준] 2373번 세 용액 들어가며두 용액을 이분탐색으로 풀어서 이 문제도 이분탐색으로 풀어야하나? 라는 생각이 당연하게 들었다. 근데 보통 left, right로 나눠서 3개의 포인터(?)를 가지고 답을 구해나가야하는데 이건 세가지인데? 이런 혼란이 생겼다. 그래서 아 그럼 2개씩 뽑아서 구한 조합의 합을 먼저 구하고 원본 배열 (nC2 + n) 합쳐서 이분탐색을 돌리면 3개의 합이 나오지 않을까? 라고 생각했다. 근데 3개의 원소를 어떻게 기록하지...이처럼 생각이 많았던 문제이다. 브루트포스, 조합을 거쳐갔지만 결국 이분탐색으로 풀었다. 문제 풀이우선 이분탐색이지만 주의할 점은 3개의 용액의 합을 비교해서 풀어야한다는 것이다. 그래서 2중으로 반복문이 돌아가겠지만 이분 탐색이므로 O(nlgn)이 될것으로 예상된다.1. 먼저.. CS/자료구조&알고리즘 2024. 5. 7. [백준] 8979번: 올림픽 문제 유형은 구현, 정렬 문제 풀이 방법 나라, 금/은/동메달 개수, 순위 등을 저장할 클래스 (Medal)를 생성한다. 이때 동점자를 계산하기 위해 score 변수를 Medal 클래스 내에 정의한다. 금메달은 10점씩 은메달은 5점씩 동메달은 1점씩 부여해 총점을 계산한다. 우선 금/은/동메달을 기준으로 정렬한다. 금메달 수가 더 많은 나라 금메달 수가 같으면, 은메달 수가 더 많은 나라 금, 은메달 수가 모두 같으면, 동메달 수가 더 많은 나라 순위를 계산한다. - 각 나라의 score를 비교해서 동일한 경우 동점 국가와 동일한 등수가 되고, 그렇지 않다면 (자신보다 더 잘한 나라 수) + 1 이 등수가 된다. 결과를 알고 싶은 국가의 등수를 출력한다. package 구현; import java.io.. CS/자료구조&알고리즘 2024. 2. 4. [백준] 2870번: 수학문제 풀이 방법 정규식을 통해 숫자를 걸러낸다. 숫자가 아닌 문자는 " "으로 바꾼다. 빈칸을 제거한다. 이 과정에서 split(" "), isBlank()를 사용했는데 ... 먼저 공백을 기준으로 문자열을 나누기 위해 split()을 사용했다. 내가 예상한 결과는 숫자만 배열에 저장되는 것인데 예상치 못하게 빈 문자("")도 같이 저장되었다. 그래서 isBlank를 사용해서 추가 검증을 해주었다. 숫자만 골라내 리스트에 저장하고 이를 정렬한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; import java.util.ArrayList;.. CS/자료구조&알고리즘 2024. 1. 24. [프로그래머스] 파일명 정렬 : JAVA 초기 제출 코드 import java.util.*; class Solution { public String[] solution(String[] files) { Arrays.sort(files, new Comparator() { @Override public int compare(String s1, String s2) { FileName fileName1 = exportFileName(s1); FileName fileName2 = exportFileName(s2); if (fileName1.getHead().toLowerCase().compareTo(fileName2.getHead().toLowerCase()) > 0) { return 1; } else if (fileName1.getHead().toLow.. CS/자료구조&알고리즘 2024. 1. 11. 이전 1 다음 728x90 반응형