본문 바로가기

Algorithm64

[백준] 11399-ATM-Java [백준] 11399-ATM-Java ❓문제 ATM 앞에 N명의 줄이 서있다. 각각의 사람은 1번 부터 N번 까지 번호가 매겨져 있다. 각각의 사람은 돈을 인출하는데 소요되는 시간을 가지고 있다. 정수 N을 입력받고, 각각의 사람이 돈을 인출하는데 소요되는 시간을 입력받아 최소한으로 모든 사람이 돈을 인출하는데 소요하는 최소 시간을 구하라 🖊️풀이법 이번 문제는 간단한 정렬문제로 풀 수 있는 문제이다. 앞의 사람이 만약 소요된 시간이 많으면 많을수록 뒤에 사람이 함께 기다려야하는 시간이 늘어난다. 따라서, 앞의 사람일 수록 소요시간이 가장 적은 순서로 정렬한다면 돈을 인출하는 시간의 최소 값을 찾을 수 있을 것이다. 정답 코드 import java.io.*; import java.util.*; public.. 2023. 7. 12.
[백준] 11478번-서로 다른 부분 문자열의 개수-Java [백준] 11478번-서로 다른 부분 문자열의 개수-Java ❓문제 하나의 문자열을 입력받아 만들 수 있는 모든 문자열의 개수를 출력하면 된다. 예시. ababc의 경우 만들 수 있는 문자열의 개수는 a,b,c,ab,ba,bc,aba,bab,abc,abab,babc,ababc로 12를 출력하면 된다. 🖊️풀이법 입력받을 문자열을 a에 담는다. Set을 이용하여, 해당 문자열이 만들 수 있는 모든 경우의 수를 담는다. Set객체의 size를 반환한다. 정답 코드 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = .. 2023. 7. 11.
[백준] 1269번-대칭 차집합-Java [백준] 1269번-대칭 차집합-Java ❓문제 대칭 차집합이란 두 집합의 합집합에서 공집합을 뺀 것을 대칭 차집합이라고 한다. 두 집합이 주어질때 대칭 차집합의 원소의 개수를 출력하라. 예시. A = {1,2,4} 이고 B = {2,3,4,5,6} 일때, A-B = { 1 } 이고, B-A = { 3, 5, 6 } 이므로, 대칭 차집합의 원소의 개수는 1 + 3 = 4개이다. 🖊️풀이법 N요소를 HashSet객체에 담는다. M요소를 순서대로 Set객체에 포함하는지 확인한다. Set에 포함되는 경우 해당 요소를 지운다. 포함이되지 않는 경우 Set에 추가한다. Set의 Size를 출력한다. 정답 코드 import java.util.*; import java.io.*; public class Main { .. 2023. 7. 11.
[백준] 11650번-좌표 정렬하기-Java 🖊️풀이법 이번 문제는 꽤나 고민이 많았다.. 처음에는 시간초과가 나와서 당황했지만, Comparator 인터페이스를 활용해서 compare메소드를 오버라이딩해주고 정렬하는 방법으로 풀었다. 우선 첫번째로 시간초과로 틀린 코드이다. 시간초과.. import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); StringBuilde.. 2023. 7. 11.
[백준] 11399-ATM-Java [백준] 11399-ATM-Java ❓문제 ATM 앞에 N명의 줄이 서있다. 각각의 사람은 1번 부터 N번 까지 번호가 매겨져 있다. 각각의 사람은 돈을 인출하는데 소요되는 시간을 가지고 있다. 정수 N을 입력받고, 각각의 사람이 돈을 인출하는데 소요되는 시간을 입력받아 최소한으로 모든 사람이 돈을 인출하는데 소요하는 최소 시간을 구하라 🖊️풀이법 이번 문제는 간단한 정렬문제로 풀 수 있는 문제이다. 앞의 사람이 만약 소요된 시간이 많으면 많을수록 뒤에 사람이 함께 기다려야하는 시간이 늘어난다. 따라서, 앞의 사람일 수록 소요시간이 가장 적은 순서로 정렬한다면 돈을 인출하는 시간의 최소 값을 찾을 수 있을 것이다. 정답 코드 import java.io.*; import java.util.*; public.. 2023. 7. 11.
[백준] 2485번-가로수-Java [백준] 2485번-가로수-Java ❓문제 첫째 줄에 심어져 있는 가로수의 수를 나타내는 정수가 주어진다. 둘째 줄 부터는 현재 심어져 있는 가로수의 위치가 양의 정수로 주어진다. 현재 심어진 가로수를 바탕으로 모든 가로수가 같은 간격이 되려면 최소 몇개의 가로수를 심어야하는지 출력하라. 🖊️풀이법 입력받은 심어져 있는 가로수들을 배열로 정의한다. 각 가로수들의 거리의 차들을 계산하고, 거리의 차들의 최대 공약수를 구한다. 최대공약수를 바탕으로, 총 가로수의 숫자를 구한뒤 심어진 가로수의 숫자를 뺀 뒤 출력한다. 정답 코드 import java.io.*; public class Main { public static void main(String[] args) throws IOException { Buff.. 2023. 7. 10.