
백준 - 램프 1034
2023. 4. 4. 23:55
알고리즘(BOJ)/Gold
문제 분석 1. 모든 행의 0 의 개수를 파악한다. 1-1. 0의 갯수가 파악되야 K번의 반복으로 다 킬 수 있는 상황인지 알 수 있다. 2. 반복되는 K가 짝수 인지 홀수 인지 파악한다. 2-1. 홀/짝이 파악되야 똑같은게 가장 많은 행들의 램프를 킬 수 있는지 알 수 있다. 3. 파악된 0의 갯수가 K보다 이하인지, K와 같은 홀/짝 인지 파악한다. 전체 소스 package test; import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(..

백준 - 저울 2437
2023. 3. 15. 23:32
알고리즘(BOJ)/Gold
문제 분석 처음에는 경우의수를 DFS로 구하려다가 알고리즘 분류 힌트를 보고 안쓰고 풀 수 있다는 방법이 있다는것을 찾아야했다. 아무리 생각해도 모르겠어서 다른 사람 풀이방식만 참고했다. 누적된 수의 +1 보다 다음수가 크다면 안된다는 것이다 sum+1 >= array[i] 를 만족해야 한다는 것이다. 처음에 sum은 +1까지하면 1이니까 첫번째 수가 1보다 큰 수가 오면 안될것이다 그다음 누적의 수는 2 인데 2보다 큰수가 오면 조합이 안된다. 전체 소스 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new B..

백준 - 강의실 배정 11000
2023. 3. 11. 00:05
알고리즘(BOJ)/Gold
문제 분석 1. 처음엔 큐에 배열의 형태로 담았다가 큐에 담긴 모든 수를 비교했었다. 2. 그 다음엔 비교할 대상이 배열과 큐에 담긴 종료시점이라는 것을 알았다. 3. 마지막으로는 큐에 담긴 모든 대상과 비교할 필요없이 우선순위 큐에 담아주면 된다는 것을 알았다. 배열을 정렬하고 우선순위에 담긴 수를 비교하면 된다. 전체 소스 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int repeat = Integer.par..

백준 - 단어수학 1339
2023. 3. 7. 21:47
알고리즘(BOJ)/Gold
문제 풀이 가장 앞에있는 알파벳부터 자리수 만큼 곱해주면 된다 2번째 예제로 볼 경우 A인 1000*9 F인 110 * 8 E인 101 * 7 C인 10*6 D인 1*5 를 다 더해주면 된다. 전체 소스 package test; import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int repeat = Integer.parseInt(br.readLine()); int[] array = new int[26]; for(int..

백준 - 콘센트 23843
2023. 3. 4. 18:08
알고리즘(BOJ)/Gold
문제 분석 충전이 필요한 기기들을 가장 높은 수부터 정렬한 후 (혹은 우선순위큐) 콘센트 배열에 가장 낮은 수에 넣어준다 7 3 5 4 3 2 1 1 1 이란 예제로 생각해보자 ---------------------- cc[0] : 0 cc[1] : 0 cc[2] : 5 ---------------------- 같거나 가장 낮은수에 넣다보니 맨 밑으로 가졌다 (그냥 작은수로 해도 될듯하다) cc[0] : 0 cc[1] : 4 cc[2] : 5 ---------------------- cc[0] : 3 cc[1] : 4 cc[2] : 5 ---------------------- cc[0] : 3 2 cc[1] : 4 cc[2] : 5 ---------------------- cc[0] : 3 2 cc[1]..

백준 - Passport Control 16288
2023. 3. 3. 15:03
알고리즘(BOJ)/Gold
문제 분석 게이트 크기의 배열을 선언하고 배열에 현재수보다 큰수만 담아준다 2번 케이스를 예로 들어보자 4 1 3 2 5 6 8 9 7 10 ----------------- 배열[0] - 4 배열[1] 배열[2] ----------------- 배열[0] - 4 배열[1] - 1 배열[2] ----------------- 배열[0] - 4 배열[1] - 1 3 배열[2] ----------------- 배열[0] - 4 배열[1] - 1 3 배열[2] - 2 ----------------- 배열[0] - 4 5 배열[1] - 1 3 배열[2] - 2 ----------------- 배열[0] - 4 5 6 배열[1] - 1 3 배열[2] - 2 ----------------- 배열[0] - 4 5 6 8..

백준 - 토너먼트 만들기 2262
2023. 3. 2. 18:40
알고리즘(BOJ)/Gold
문제 분석 가장 낮은 랭크(=가장 높은 수)의 인접한것중에서 또 가장 낮은 랭크랑 대결을 하면된다. 맨앞인 경우에는 바로 뒤랑 비교하고 맨뒤인 경우에는 바로 앞이랑 비교한다. 전체 소스 package test; import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int repeat = Integer.parseInt(br.readLine()); StringTokenizer st = new StringTokenizer(br...

백준 - 시간 관리하기 6068
2023. 3. 1. 17:06
알고리즘(BOJ)/Gold
문제 분석 2차배열 정렬을 먼저 하고 진행했다. 진행되는 시간들의 합이 각 순간의 조건을 넘어가면 중단시키기 위해서다. 매순간 조건과의 차이가 가장 적은것이 결과값이 된다. 전체 소스 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()," "); int repeat = Integer.parseInt(st.nextToken()..

백준 - 행복 유치원 13164
2023. 2. 28. 16:55
알고리즘(BOJ)/Gold
문제 분석 두개씩 묶어서 그 차이를 구한다. 이미 오름차순으로 정렬 되어있으니, 절대값이나 정렬은 하지 않았다. 첫번째 수일때는 비교할 수 가 없으니 패스해주고 두번째부터 앞의수랑 비교해준다. 그차이가 큰거부터 제거해야하니 이때 정렬을 해준다. 묶어야 할 수 만큼 제거해주고 남을 수 를 더해줬다. 전체 소스 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringToke..

백준 - 과제 13904
2023. 2. 21. 23:55
알고리즘(BOJ)/Gold
문제 분석 2차배열로 오름차순으로 정렬하고 시작했다. 가장 높은 수 부터 날짜를 하나씩 낮춰가면서 현재남은 날짜보다 높으면 더 해주면 된다. 5일동안진행하고 4 30 4 20 1 10 3 10 이 있다고 할때 5일보다 같거나 큰건없으니 패스 4일보타 같거나 큰건 30,20 이 있으니 더 높은 30을 픽 3일보다 같거나 큰건 20,10 남아있으니 20을 픽 2일보다 같거나 큰건 10이 남아있으니 10을픽 1일보다 같거나 큰건 10이 남아있으니 10을픽 전체 소스 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = ne..