본문 바로가기

반응형

컴퓨터/백준

(20)
JAVA - 백준 알고리즘 - 1969 DNA 이 문제는 알고리즘 스터디를 하는 도중 강사님께서 그리디 알고리즘 연습문제로 추천해주신 것이다. 차례대로 문자열을 입력받아 각각의 자리에 들어가는 A C G T의 개수를 세어주고 Math.max() 함수를 이용하여 갯수를 비교해주었고 가장 큰 값을 차례대로 입력했다. 입력할 때 사전 순으로 정렬하기 위해서 A C G T의 순서로 for문을 작성하였다. max가 아닌 알파벳의 모든 갯수를 더해주어 Hamming Distance를 얻었다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { stati..
JAVA - 백준 알고리즘 - 11399 ATM 이 문제는 백준 단계별 풀어보기 그리디알고리즘에 분류된 문제이다. 이 문제는 정렬을 사용하면 쉽게 풀 수 있다. N번째 사용자가 ATM사용을 마무리하는 시간은 첫번째 사용자가 이용하는데 걸린 시간 + 두번째 사용자가 이용하는데 걸린 시간 + 세번째 사용자가 이용하는데 걸린 시간 + --- N번째 사용자가 이용하는데 걸린 시간 이기때문에 오름차순 정렬시 N번째 사용자가 ATM사용을 마무리하는 시간이 최소가 된다. Arrays.sort() 를 이용하여 오름차순 정렬을 하였다. 만약 오름차순이 아닌 다른 정렬기준을 사용하는 문제였다면 Comparator을 이용하여 정렬기준을 구현하면 된다. import java.io.BufferedReader; import java.io.IOException; import j..
JAVA - 백준 알고리즘 - 1541 잃어버린 괄호 이 문제는 백준 단계별로 풀기 그리디알고리즘에 분류된 문제이다. 이 문제를 푸는 방법은 "-" 부호 뒤에 온 숫자들을 모두 빼주면 된다. StringTokenizer 를 이용하여 "-" , "+" 를 기준으로 숫자들을 잘라주었다. "-" 부호를 기준으로 앞 쪽에 있던 숫자들 , 첫번째 Token의 숫자들 더해주고 "-" 부호를 기준으로 뒷 쪽에 있던 숫자들 , 두번째 Token의 숫자들은 마이너스를 해주었다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int result; p..
JAVA - 백준 알고리즘 - 1931번 회의실 배정 백준 단계별 풀기에 그리디알고리즘으로 분류되어있는 문제인데, 간단하게 풀릴줄 알았지만 생각보다 시간이 오래 걸렸다. Comparator의 정렬함수를 적절히 구현하여 간단하게 답을 구했다. 정렬 방식 1. 끝나는 시간이 같을때 => 시작하는 시간이 이른 순서대로 2. 끝나는 시간이 다를때 => 끝나는 시간이 이른 순서대로 1번을 정렬해주는 이유는 시작시간과 끝나는 시간이 같은 경우를 고려해주기 위해서이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Comparator; import java.util.String..

반응형