코딩테스트 준비664 [백준] 11399번 - ATM [Java] https://www.acmicpc.net/problem/11399 1. 아이디어 인출하는데 걸리는 시간이 짧은 사람부터 인출을 하는게 전체 인출시간의 합이 최소가 된다는 점을 활용한다.2. 문제풀이 앞에 인출한 사람이 걸린 시간만큼 뒷사람들이 영향을 받으므로 인출하는데 걸리는 시간이 짧은 사람부터 인출하도록 정렬을 해준다. 이후 정렬된 배열의 누적합 배열을 구하면 각 사람이 인출하는데 걸리는 시간을 구할 수 있고, 누적합 배열의 총합이 인출하는데 걸리는 전체 시간이 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { .. 2024. 12. 2. [백준] 1026번 - 보물 [Java] https://www.acmicpc.net/problem/1026 1. 아이디어 S의 최솟값은 작은 수와 큰 수의 곱의 합으로 이루어졌을 때라는 점을 활용한다.2. 문제풀이 두 배열에서 가장 큰 수와 가장 작은 수를 매칭시키고 다음으로 큰 수와 다음으로 작은 수를 매칭시키는 과정을 반복하면 되므로 두 배열을 정렬한 후 인덱스를 하나는 정방향, 하나는 역방향으로 순회하며 곱해서 최솟값을 구해준다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new .. 2024. 12. 2. [백준] 11047번 - 동전 0 [Java] https://www.acmicpc.net/problem/11047 1. 아이디어 필요한 동전이 최소가 되려면 가장 단위가 큰 동전부터 최대로 사용하는 걸 반복하면 된다.2. 문제풀이 동전의 가치가 오름차순으로 주어지는데 나중에 개수를 셀 때 향상된 for문으로 계산하기 위해 내림차순이 되게 배열에 저장한다. 이후 배열을 순회하며 단위가 큰 동전을 최대한 사용하고 동전을 사용한만큼 남은 금액을 갱신해주는 과정을 반복하면 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new B.. 2024. 12. 2. [백준] 10820번 - 문자열 분석 [Java] https://www.acmicpc.net/problem/10820 1. 아이디어 문자열에 포함된 소문자, 대문자, 숫자, 공백을 구분해서 개수를 구해야 하는데 이때 각각의 아스키 코드로 구분할 수 있는 점을 활용했다.2. 문제풀이 아스키 코드 문자의 개수를 세는 카운팅 배열을 활용해서 각 문자의 개수를 전부 세고 이후 해당 범위의 개수의 합을 구하는 방식으로 구현했다. 카운팅 배열을 그냥 소문자, 대문자, 숫자, 공백 이렇게 4가지만 셀 수 있게 만들고 카운팅 배열에 넣을 때 조건을 걸어서 해결할 수도 있는데 이 방식이 가독성이 더 좋을 것 같았다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) t.. 2024. 12. 2. 이전 1 ··· 53 54 55 56 다음