30684번: 모르고리즘 회장 정하기백준/문제2024. 8. 6. 15:15
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/30684
언어 : Kotlin
문제 설명 :
모르고리즘 회장 태윤이는 2024년 모르고리즘을 이끌어갈 회장을 고르려고 한다. 태윤이가 회장을 직접 고르는 이유는 아무도 회장을 맡고 싶어 하지 않기 때문이다. 따라서 태윤이는 이름이 세 글자인 사람 중에서, 사전 순으로 가장 앞선 사람을 회장으로 뽑으려고 한다.
사람들의 이름은 모두 서로 다르고, 길이가 2 이상 5 이하인 알파벳 대문자 A - Z로 이루어져 있다.
이름 S가 이름 T에 비해 사전 순으로 앞선다는 것은 아래 두 조건 중 하나가 성립하는 것과 동치이다. 이때 |S|는 S의 길이이고, S[i]는 S의 i번째 문자를 의미한다.
- S가 T의 접두사이다. 즉, \lvert S \rvert < \lvert T \rvert$이고, 모든 1 ≤ i ≤ |S|에 대해 S[i] = T[i]이다.
- 처음으로 S[i] < T[i]인 i에 대해 S[i] < T[i]이다. (1 ≤ i ≤ min(|S|, |T|))
어떤 사람이 회장으로 선정될지 결과를 예측해 보자.
입력 :
입력은 다음과 같이 주어진다.
N
name_1
name_2
...
name_{N-1}
name_N
첫째 줄에 사람의 수 N이 주어진다.
이어 N줄에 걸쳐 사람들의 이름 name_i가 주어진다.
출력 :
회장으로 뽑힐 사람을 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 1024MB
- 1 ≤ N ≤ 100,000
- 2 ≤ |name_i| ≤ 5$
- 이름이 세 글자인 사람은 반드시 존재한다.
- 각 이름은 최대 한 번만 주어진다.
입출력 예 :
입력 | 출력 |
7 KGW LH AHC LKY DREAM AA KTY |
AHC |
풀이 :
문제의 설명과 조건의 복잡함에 비해 도출해내야 하는 답은 그저 이름이 세글자인 사람 중 사전 순으로 가장 빠른 사람인 것 같은데 왜 이런지 모르겠다.
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val list = MutableList(readLine().toInt()) { readLine() }
bw.write(list.filter { it.length == 3 }.sorted()[0])
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
20494번: 스시 (0) | 2024.08.07 |
---|---|
12104번: 순환 순열 (0) | 2024.08.06 |
10929번: SHA-224 (0) | 2024.08.06 |
31306번: Is Y a Vowel? (0) | 2024.08.05 |
21966번: (중략) (0) | 2024.08.05 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!