본문 바로가기
  • 개발하는 곰돌이

문자열15

[Kotlin] 백준 1283 : 단축키 지정 문제 링크 1283번: 단축키 지정 첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하 www.acmicpc.net 문제 해설 문제의 로직 자체는 여러울 것이 없다. 단축키를 저장할 Set을 선언한 후 단축키를 지정하는 방법을 순서대로 진행하며 지정되는 단축키를 Set에 삽입하고, 지정된 단축키에 대괄호를 씌워서 출력하는 것을 반복하기만 하면 된다. 다만, 단축키는 대소문자를 구분하지 않으므로 Set에 단축키를 삽입할 때 대문자 또는 소문자로 통일해야 한다. 세부적인 로직은 다음과 같다. 각 줄로 입력받은 옵션의 이름을 공백을 구분자로 분리하여 각 단.. 2023. 1. 18.
[Kotlin] 백준 23629 : 이 얼마나 끔찍하고 무시무시한 수식이니 문제 링크 operator.add(it) else -> numbers.add( try { it.toLong() } catch (e: NumberFormatException) { println("Madness!") return@with } ) } } } if (numbers.size != operator.size) { println("Madness!") return@with } var result = numbers.poll() while (operator.isNotEmpty()) { when (operator.poll()) { "+" -> result += numbers.poll() "-" -> result -= numbers.poll() "x" -> result *= numbers.poll() "/" -.. 2023. 1. 14.
[Kotlin] 백준 9935 : 문자열 폭발 문제 링크 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 문제 해설 스택을 사용하여 해결할 수 있다. 문제 해결 과정은 다음과 같다. 먼저 문자열을 앞에서부터 순회하면서 스택에 문자를 삽입한다. 스택에 문자를 삽입하는 도중에 폭발 문자열의 마지막 글자가 나타나면 폭발 문자열의 길이만큼 스택에서 문자를 제거하여 폭발 문자열인지 체크할 문자열을 만든다. 이 때 스택에서 현재 스택의 크기가 폭발 문자열의 길이보다 작을 수 있기 때문에 EmptyStackException을 방지하기 위한 체크 로직을 .. 2022. 12. 19.
[Kotlin] 백준 5430 : AC 문제 링크 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 문제 해설 리스트나 덱(Deque)을 이용해서 풀 수 있는 문제다. 풀이 과정은 두 방법 모두 동일하다. 가장 먼저 입력에서 [x1,...,xn] 형태로 주어진 배열을 덱에 삽입하기 위해 입력값을 파싱해줘야 한다. slice() 메소드로 입력의 시작과 끝에 있는 대괄호를 제외한 문자열을 만들고 콤마(,)를 구분자로 하여 각 정수값을 덱에 삽입한 후 주어진 함수 연산을 시작한다. 문제의 함수에서는 뒤집기 연산이라는 것이 있는데 R이 들어왔을 때 정말로 뒤집어서 계산하면 안된다. R이 들어올 때마다 뒤집기를 수.. 2022. 12. 4.
[Kotlin] 백준 1251 : 단어 나누기 문제 링크 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 문제 해설 완전 탐색법으로 풀어야 하는 문제다. 주어진 단어를 3개로 나눈 후 각각을 뒤집어서 합쳐서 나온 단어들 중 사전순으로 가장 앞서는 단어를 구하기 위해서 2중 반복문을 돌려서 각 경우의 단어를 만든다. 이후, 새롭게 만들어진 단어와 이전 케이스에서 나온 단어를 비교하여 사전순으로 앞서는 단어를 비교하여 앞서는 단어를 결과에 저장하는 과정을 반복하여 해답을 구한다. Kotlin에서는 slice() 메소드를 통해 문자열을 쉽게 나눌 수 있으며 re.. 2022. 11. 23.
[Kotlin] 백준 1811 : Adjacent Mastermind 문제 링크 1811번: Adjacent Mastermind Mastermind is a game played with a supply of pegs of various colours, or in the absence of proper equipment, pen and paper (or a computer!) using letters A, B, C, etc, as ‘pegs’ with the different letters representing different colours. One player choo www.acmicpc.net 문제 해설 번역이 되지 않은 문제라 그런지 문제를 푸는 시도조차 한 사람들이 거의 없는 문제이다. 대충 해석을 해보면 플레이어가 추측한 guess와 target이 주어졌을 .. 2022. 11. 22.
Kotlin 기본 문법 3 : String 목차 개요 Kotlin의 String 클래스는 Java와 몇가지 차이점이 있다. 이번 포스트에서는 이전 포스트에서 간단하게만 소개했던 Kotlin의 String 클래스에 대해 더 정리하고자 한다. 문자열의 동등 비교 Kotlin에서는 Java와 달리 == 연산자를 이용하여 문자열의 값이 같은지 비교할 수 있다. Kotlin 문자열에서의 ==는 Java String 클래스의 equals() 메소드와 같은 역할을 한다. 물론 Kotlin에서도 equals() 메소드를 이용하여 두 문자열이 같은지 비교할 수 있지만 == 연산자를 사용하는 것을 권장하고 있다. Java에서 문자열의 대소문자를 무시하고 비교하려면 equalsIgnoreCase()라는 별도의 메소드를 사용해야 하는 것과 달리 Kotlin에서는 eq.. 2022. 11. 21.