오늘은 발표를 마치고 챌린지반 수업을 들었다.
아침에는 오랜만에 코드카타를 진행했다.
내 맘대로 문자열 정렬하기였나 그런 문제였다.
class Solution {
fun solution(strings: Array<String>, n: Int): Array<String> {
var answer = arrayOf<String>()
var strIdx = mutableListOf<Pair<String, Char>>()
for(i in strings.indices) {
strIdx.add(strings[i] to strings[i][n])
}
strIdx = strIdx.sortedWith(compareBy({ it.second }, { it.first })).toMutableList()
for(i in strIdx.indices) {
answer += strIdx[i].first
}
return answer
}
}
오랜만에 풀어서 한번 가져와봤다. 이 문제를 처음 풀기위해 시도한건 꽤 됐는데 그땐 분명히 뭐가 뭔지 모르겠고 코드가 잘 안그려졌었는데 오늘 해보니 좀 허무할만큼 간단하게 풀린 것 같다.
String 여러개가 있는 Array와 정수 n이 주어지면 각 String의 n번째 문자로 정렬하는 내용이었다.
sort관련해서 찾아보니 sortedWith 라는 것이 있다는 걸 발견하고 그걸 compareBy와 함께 이용하면 두가지 기준으로 정렬하는 것도 가능했다.
그래서 일단 n번째 문자와 문자열 자체를 Pair로 묶어 MutableList로 만든다음에, 그걸 다시 정렬을 하고 거기서 first값인 문자열만 뽑아다가 answer에 넣는 방식으로 끝냈다.
몇가지 타입 오류와 인덱스 오류만 고치고 나니 간단하게 풀려서 조금 허무했다.
챌린지반 수업은 극악무도했다. 완전한 입문자면서 무슨 자신감으로 챌린지반을 택한걸까.
상향지원하면 매니저님들이 말려주신다고 해서 믿었는데 날 안 말려주신 매니저님들이 밉다.
당장 data class 하나만으로도 벅찬데 웬 sealed interface부터 viewbinding, 각종 기예들이 날 혼란스럽게 했다.
함수를 만들때부터 EditText.어쩌구() 같은 방식으로 만들 수가 있는건지 뭐 다른 방법이 있는건지 한개한개 쫓아가는 것만으로도 과부하가 올것 같았다.
일단 내일 발제를 보고 개인과제를 마친다음에 이번주는 챌린지반 과제와 복습에 매달려봐야겠다.