1283번: 단축키 지정백준/문제2024. 4. 8. 12:53
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/1283
언어 : Kotlin
문제 설명 :
한글 프로그램의 메뉴에는 총 N개의 옵션이 있다. 각 옵션들은 한 개 또는 여러 개의 단어로 옵션의 기능을 설명하여 놓았다. 그리고 우리는 위에서부터 차례대로 각 옵션에 단축키를 의미하는 대표 알파벳을 지정하기로 하였다. 단축키를 지정하는 법은 아래의 순서를 따른다.
- 먼저 하나의 옵션에 대해 왼쪽에서부터 오른쪽 순서로 단어의 첫 글자가 이미 단축키로 지정되었는지 살펴본다. 만약 단축키로 아직 지정이 안 되어있다면 그 알파벳을 단축키로 지정한다.
- 만약 모든 단어의 첫 글자가 이미 지정이 되어있다면 왼쪽에서부터 차례대로 알파벳을 보면서 단축키로 지정 안 된 것이 있다면 단축키로 지정한다.
- 어떠한 것도 단축키로 지정할 수 없다면 그냥 놔두며 대소문자를 구분치 않는다.
- 위의 규칙을 첫 번째 옵션부터 N번째 옵션까지 차례대로 적용한다.
입력 :
첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하의 알파벳으로 표현된다. 단어는 공백 한 칸으로 구분되어져 있다.
출력 :
N개의 줄에 각 옵션을 출력하는데 단축키로 지정된 알파벳은 좌우에 [] 괄호를 씌워서 표현한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
5 New Open Save Save As Save All |
[N]ew [O]pen [S]ave Save [A]s Sa[v]e All |
8 New window New file Copy Undo Format Font Cut Paste |
[N]ew window New [f]ile [C]opy [U]ndo F[o]rmat Fon[t] Cut [P]aste |
풀이 :
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 n = readLine().toInt()
val set = mutableSetOf<Char>()
repeat(n) {
var isFirstChar = false
readLine().also { option ->
val words = option.split(" ").toMutableList()
for (i in words.indices) {
val cur = words[i]
if (!set.contains(cur[0].lowercaseChar())) {
set.add(cur[0].lowercaseChar())
words[i] = words[i].replaceRange(0 .. 0, "[${cur[0]}]")
isFirstChar = true
break
}
}
var isChanged = false
if (!isFirstChar) {
for (i in words.indices) {
if (!isChanged) {
for (j in words[i].indices) {
val cur = words[i][j]
if (j != 0 && !set.contains(cur.lowercaseChar())) {
set.add(cur.lowercaseChar())
words[i] = words[i].replaceRange(j .. j, "[$cur]")
isChanged = true
break
}
}
}
}
}
bw.write(if (it < n) "${words.joinToString(" ")}\n" else words.joinToString(" "))
bw.flush()
}
}
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
9946번: 단어 퍼즐 (0) | 2024.04.08 |
---|---|
6443번: 애너그램 (0) | 2024.04.08 |
3765번: Celebrity jeopardy (0) | 2024.04.05 |
1855번: 암호 (0) | 2024.04.05 |
9324번: 진짜 메시지 (1) | 2024.04.05 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!