본문 바로가기

알고리즘/매일마다 풀기(백준)42

구현 문제만 풀어보기 어제 부스트 캠프 설명회를 시청하였습니다. 다른 부트캠프들과 다르게, 1차 코딩테스트는 cs 객관식 문제와 프로그래밍 문제가 나온다고 합니다. 여러 합격 후기들을 보니, 주로 구현하는 문제가 나온다고 하네요. 젤 못하는 건데.. 따라서 오늘부터는 구현 유형의 문제만 주구장창 풀어볼 예정입니다. "구현" 이라는 카테고리를 만들어, 해당 카테고리에서 푼 문제들을 정리해보겠습니다. cs 공부는 내일부터.. 2023. 5. 12.
[2023-05-11] 2512 예산 (Kotlin) + 12 문제 문제 링크: https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 첫 번째 시도 (틀렸습니다.) // ex) 120, 110, 150, 140 // 국가 예산: 485 // 1. 정렬 110, 120, 140, 150 // 2. 국가 예산 개수로 나누기 : 121 // 3. 각 지방 예산이 121보다 낮을 경우, 그 차이를 더해주기 // (121 - 110) + (121 - 120) = 12 // 4. 121보다 큰 지방 예산의 개수로 나눠주기.. 2023. 5. 11.
[2023-05-10] 1182 부분 수열의 합 (Kotlin) + 8 문제 문제 링크: https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net // 수열 중 선택할 개수를 반복문을 통해 dfs 함수에 전달해주었습니다. package thirtyfirst_fourtieth.fourtieth import java.io.* import java.util.* fun main(){ val br = BufferedReader(InputStreamReader(System.`in`)) val (n,s) .. 2023. 5. 10.
[2023-05-09] 24479 알고리즘 수업 - 깊이 우선 탐색 1 (Kotlin) + 7문제 문제 링크: https://www.acmicpc.net/problem/24479 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 첫 번째 시도 (틀렸습니다.) package thirtynineth import java.io.* import java.util.* fun main(){ val br = BufferedReader(InputStreamReader(System.`in`)) val (n, m, r) = br.readLine().spl.. 2023. 5. 9.
[2023-05-08] 1735 분수 합(Kotlin) + 4문제 문제 링크: https://www.acmicpc.net/problem/1735 1735번: 분수 합 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. www.acmicpc.net 최대 공약수를 구하면 되는 문제였습니다. 유클리드 호제법을 구현하는 함수를 외워서 작성하였습니다. package thirtyeighth import java.io.* fun main(){ val br = BufferedReader(InputStreamReader(System.`in`)) val (a,b) = br.readLine().split(' ').map{it.toInt()} val (c,d) = br.readLine().split(.. 2023. 5. 8.
[2023-05-07] 28015 영역 색칠 (Kotlin) 문제 링크: https://www.acmicpc.net/problem/28015 28015번: 영역 색칠 첫째 줄에는 그림의 세로 길이 $N$과 가로 길이 $M$이 공백으로 구분되어 주어진다. $(2\leq N,M\leq 100)$ 그다음 $N$줄에 걸쳐 $M$개의 정수가 공백으로 구분되어 주어진다. 각 정수는 그림 한 칸의 정보 www.acmicpc.net 고작 실버 3 따리 문제지만, 삽질을 하도 많이 해서 올려봅니다. 첫 번째 시도(틀렸습니다.) package thirtyseventh import java.io.* fun main(){ val br = BufferedReader(InputStreamReader(System.`in`)) val (n,m) = br.readLine().split(' ').. 2023. 5. 7.
[2023-05-06] 1890 점프 (Kotlin) + 6문제 문제 링크: https://www.acmicpc.net/problem/1890 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net 처음 보자마자 BFS 유형으로 생각하고 문제를 풀었다. 첫 번째 시도 (메모리 초과) package thirtysixth import java.io.* import java.util.* fun main(){ val br = BufferedReader(InputStreamReader(System.`in`)) val n = br.readLine().toInt() // 입력을 저.. 2023. 5. 6.
[2023-05-05] 1325 효율적인 해킹 (Kotlin) + 5문제 문제 링크 : https://www.acmicpc.net/problem/1325 4,5 val map = Array(n+1){arrayListOf()} repeat(m){ val token = StringTokenizer(br.readLine()) val a = token.nextToken().toInt() val b = token.nextToken().toInt() map[b].add(a) } // 1 ~ n 별로 해킹 가능한 횟수를 저장할 배열 val countArr = Array(n+1){0} // 최대 횟수를 저장할 변수 var maxCount = 0 // 1 ~ n까지 반복 for (index in 1..n){ // 방문 배열 val visit = Array(n+1){false} val queu.. 2023. 5. 5.