![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnVMpn%2FbtrWd0KLLPq%2FFRc4h7KtQKeKCQkIff92Tk%2Fimg.png)
https://www.acmicpc.net/problem/10867 10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net 난이도 : 실버 5 태그 : 정렬 설명 중복이 없게 함을 위해 set 자료구조를 사용하였습니다. set (집합)은 자료에 순서가 없고, 중복 또한 없기 때문에 중복을 제거할 때 유용합니다. 모든 데이터를 다 받았을 때, 한 번만 정렬하여 출력하면 됩니다. 소스코드 import java.io.BufferedReader import java.io.InputStreamReader import java.util.StringTokeni..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkJY0M%2FbtrWg1Puz2p%2FyP9cy0VF7e9BMpNu18Fuc0%2Fimg.png)
https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 난이도 : 실버 2 태그 : 자료 구조, 우선순위 큐 설명 https://uknowblog.tistory.com/126 [백준 1927번] [Kotlin] 최소 힙 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUYYFq%2FbtrWjlmv7Hk%2FLOgz6uBs2OAHUeIIYtNfu0%2Fimg.png)
https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 난이도 : 실버 2 태그 : 자료 구조, 우선순위 큐 설명 최소 힙을 사용하여 1. 배열에 자연수 x를 넣고 2.가장 작은 값을 출력후 배열에서 제거 하는 프로그램을 만드는 문제입니다. 자바와 코틀린에는 기본적으로 지원되는 PrioryQueue 자료구조가 있습니다. 말 그대로, 우선순위에 따라 하나씩 꺼내올 수 있는 큐 인데요. 만약 1, 3, 5, 2, 0, 10 순으로 넣었..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjzVUy%2FbtrUxfC6iCy%2FidIB9en6eXoWBRgjWz8io0%2Fimg.png)
https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 난이도 : 실버 4 태그 : 구현, 자료 구조, 스택 설명 ArrayList를 사용하면 쉽게 풀 수 있습니다. 0이 아닌 수가 입력으로 들어올 때엔 ArrayList에 하나씩 삽입하다가, 0이 입력으로 들어오면 ArrayList에서 마지막 원소를 빼고, 모든 입력이 들어오면 ArrayList 안에 남아있는 원소의 합을 출력하면 됩니다. 소스코드 fun main()..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F081SM%2FbtrUHOjghkE%2FpuZs8izxUTcw4jPFakIJKk%2Fimg.png)
https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 난이도 : 실버 4 태그 : 그리디 알고리즘, 정렬 설명 각 사람이 돈을 인출하는데 걸리는 최소한의 시간을 찾는 문제입니다. 단순히, 각 사람의 인출시간을 오름차순으로 정렬하여 기다린 시간만큼 더해주면 됩니다. 소스코드 fun main() { val testCase = readLine()!!.toInt() val nums = readLine()!!.toString().trim().split(" ").map { i -> i.to..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F06NIr%2FbtrUdhe4FIR%2Fjv1whyt8F00tGsA2BGX5c0%2Fimg.png)
https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 난이도 : 브론즈 1 태그 : 수학, 정수론, 소수 판정 설명 N에 대해 소인수분해를 하는 문제입니다. 소인수분해 과정은 꽤 간단합니다. 60을 소인수분해 한다 했을때, 60 / 2 = 30 이며, 30 / 2 = 15 입니다. 2로는 더 이상 나눠지지 않으니 3으로 나눠봅시다. 15 / 3 = 5 이며, 더 이상 3으로 나누어지지 않고, 4로도 나누어지지 않습니다. 5 / 5 = 1 입니다. 이와 같이 60을 소인수분해 하면 2 * 2 * 3 * 5 = 60을 구할 수 있습니다. 소스코드 fun main() { v..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoGyQ5%2FbtrT6XXpDS5%2F9YKV2bEKyRX5fXaGLvPk2k%2Fimg.png)
https://www.acmicpc.net/problem/2563 2563번: 색종이 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net 난이도 : 실버 5 태그 : 구현 설명 처음에는 어떻게 접근할지 고민하다가, 가로 / 세로 크기가 100씩 밖에 되지 않는 작은 범위인 것을 보고, 그냥 2차원 배열 하나 생성해서 색종이로 덮여진 부분만 체크하고, 색종이로 덮인 부분을 카운트해 출력하면 되더군요. 소스코드 fun main() = with(System.`in`.bufferedReader()) { val n = readLine().toInt()..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb0B58%2FbtrTzvGjMTO%2FE5eZ5jqTgfd6oDHlG7K2dK%2Fimg.png)
https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 난이도 : 골드 4 태그 : 그래프 이론, 그래프 탐색, 너비 우선 탐색 설명 불이 확산되는 와중에 지훈이가 불에 닿지 않으면서 탈출할 수 있는 최소 시간을 출력하는 문제입니다. BFS를 사용해 풀이할 수 있는데, 불과 지훈이의 맵을 따로 두어, 불의 맵을 먼저 BFS 한 후, 지훈이의 맵을 탐색해가며, 각 좌표가 불이 도달하기 이전에 도달할 수 있는지 체크하면 됩니다. 소스코드 i..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrmnWX%2FbtrTsmXq0Nw%2FqwR0CpCTHyBZTVXokMMoek%2Fimg.png)
https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 난이도 : 골드 4 태그 : 자료구조, 해시를 통한 집합과 맵, 두 포인터, 이분 탐색 설명 N개의 수 중 어떤 수가 다른 두 수의 합일때, 그 수를 좋다고 합니다. 좋은 수의 개수를 찾는 문제입니다. 이 분제는 두 포인터 혹은 이분 탐색으로 풀 수 있을 것 같은데, 저는 두 포인터를 사용해 풀이하도록 하겠습니다. left, right 두 개의 포인터를 선언하고, left + right의 값이 타 값보다 작으면 left를 +..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmUJy1%2FbtrTseyb08V%2Fk9c4531md1wEcYvYadGoo0%2Fimg.png)
https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 난이도 : 브론즈 2 태그 : 구현, 정렬 설명 n개의 학생 중 k 명만 상을 받으므로, 학생을 내림차순 정렬하여 k번째 학생의 점수를 출력하면 됩니다. 소스코드 fun main() { val nk = readLine()!!.split(" ") val arr = readLine()!!.split(" ").map { it.toInt() }.sortedDescending().toTypedArray() println(arr[nk[1].toInt() - 1]) }