최코딩의 개발
[백준 1283번] 단축키 지정 본문
728x90
https://www.acmicpc.net/problem/1283
N = gets.chomp.to_i
list = []
alphabet = Array.new(26, false)
# 입력 받으면서 해결
for start in 0..N - 1
str = gets.chomp.to_s
flag = false
splitFlag = false
bigStr = false
# 공백 구분
str_split = str.split(' ')
# 첫글자 공략 공백 돌기
for i in 0..str_split.length - 1
if !splitFlag
resultStr = ""
# 첫글자 있는지 확인
strSplit = str_split[i]
if strSplit[0] >= 'A' && strSplit[0] <= 'Z'
splitOrd = strSplit[0].ord - 65
else
splitOrd = strSplit[0].upcase.ord - 65
end
if !alphabet[splitOrd]
strSplit[0] = "[" + strSplit[0] + "]"
splitFlag = true
flag = true
alphabet[splitOrd] = true
# 합쳐서 넣기
for k in 0...str_split.length
if k == i
resultStr += strSplit
else
resultStr += str_split[k]
end
resultStr += " "
end
list.push(resultStr.strip)
end
end
end
# 뒷글자 공략
if !splitFlag
splitFlag2 = false
for i in 0..str_split.length - 1
if !splitFlag2
resultStr = ""
# 뒷글자 있는지 확인
for j in 1...str_split[i].length
strSplit = str_split[i]
if strSplit[j] >= 'a' && strSplit[j] <= 'z'
splitOrd = strSplit[j].upcase.ord - 65
else
splitOrd = strSplit[j].ord - 65
end
if !alphabet[splitOrd]
flag = true
alphabet[splitOrd] = true
strSplit[j] = "[" + strSplit[j] + "]"
splitFlag2 = true
# 합쳐서 넣기
for k in 0...str_split.length
if k == i
resultStr += strSplit
else
resultStr += str_split[k]
end
resultStr += " "
end
list.push(resultStr.strip)
break
end
end
end
end
end
if !flag
list.push(str)
end
end
for k in 0...list.length
puts list[k]
end
하... 진짜 이 문제 너무 이상하다. 문제 설명이 너무 빈약해서 풀 때 정말 어려웠다. 결국 2~3시간이나 걸려버렸다...
핵심은 첫 글자가 단축키로 이미 지정됐는지 확인하고, 만약 되어 있다면 그다음 알파벳을 단축키로 지정하면 되는 거였다. 여기서 띄어쓰기도 고려해야 했고, 단어 단위로 생각해야 해서 복잡했다.
게다가 Ruby가 Java와는 다르게 ASCII 코드 처리나 문자열 메서드가 다른 부분이 많아서 익숙하지 않아 애를 먹었다. 그래도 끝까지 해결하긴 했다! 😤
728x90
'코딩테스트 > 백준' 카테고리의 다른 글
[백준 1406번] 에디터 (0) | 2025.01.30 |
---|---|
[백준 20125번] 쿠키의 신체 측정 (0) | 2025.01.29 |
[백준 1205번] 등수 구하기 (0) | 2025.01.24 |
[백준 17266번] 어두운 굴다리 (0) | 2025.01.24 |
[백준 20922번] 겹치는 건 싫어 (2) | 2025.01.23 |