[백준] 9012번: 괄호 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 풀이 이 문제는 스택을 이용하여 해결할 수 있다. '('을 입력받은 경우 스택에 저장하고 ')'을 입력받은 경우에는 스택에서 제거하는 방법이다. 이 때, 스택이 비어있을 때')'을 입력받은 경우와 모든 입력을 처리 했는데 스택이 비어있지 않는 경우에는 입력받은 괄호 문자열이 잘못된 문자열인 것이다. 이번에는 mutableList를 이용해 스택을 구현해 보았다. 스택에서 push(n)에 해당하는 함수는 list.add(n)을 이..
[백준] 7568번: 덩치 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 풀이 입력 받은 정보를 저장하는 배열과 순위를 저장하는 배열을 만들고, 입력받은 정보를 다른 정보와 비교해 키와 몸무게가 모두 크다면 순위를 저장하는 배열에 +1 을 해주어 해결하였다. 코드 fun main() { val br = System.`in`.bufferedReader() val bw = System.out.bufferedWriter() val num = br.readLine().toInt() val arr = Array(num){ I..
[백준] 1920번: 수 찾기 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 풀이 이 문제를 풀이하기 위해 이분 탐색(Binary Search) 알고리즘이 필요하다. 이분 탐색이란 오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘이다. 처음 중간값을 선택하고, 찾고자하는 값과 비교해서 중간값이 더 크다면 그 중간값이 새로운 최댓값이 되고, 더 작다면 최솟값이 된다. 그리고 다시 새로운 중간값을 찾고, 찾고자하는 값과 비교해나가는 것이다. 풀이한 코드에서는 binarySe..
[백준] 11726번: 2×n 타일링 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 풀이 문제를 보고 일단 타일의 모습을 그려보기로 했다. n의 타일은 n - 1 의 타일에 세로 타일이 하나씩 추가된 모습과, n - 2의 타일에 가로 타일 두개씩 추가된 모습이다, 이를 점화식으로 나타내면 dp[n] = dp[n - 1] + dp[n - 2] 이다. 이 점화식을 이용해 문제를 해결하면 된다. 코드 fun main() { val br = System.`in`.bufferedReader() val bw = System.out.bufferedWriter() val mo..
[백준] 1181번: 단어 정렬 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 먼저 코틀린의 HashSet을 이용하여 중복된 단어의 입력을 방지한다. 이 set을 정렬하기 위해 MutableList로 형변환 시켜준다. 이 리스트를 Comparator를 이용하여 정렬시켜주기 위해 sortWith() 함수를 사용한다. 두 단어의 길이가 같은 경우에는 알파벳 순서에 따라 정렬하고, 아닌 경우에는 길이에 따라 정렬해준다. 이 후, 정렬된 리스트를 출력하면 된다. 코드 fun main() { val br = System.`in..