매일 백준의 알고리즘 문제를 풀며 3문제씩 풀며
한 언어를 마스터 할 것을 목표로 이 글을 작성할 예정입니다.
https://www.acmicpc.net/problem/2444
별을 찍는 문제는 조건을 보고 반복문을 잘 돌려줘야 하는데
kotlin에는 downTo라는 조건이 있어 뒤부터 시작하는 반복도 만들어 줄 수 있었다.
출력을 위해서n - x + 1의 조건과2 * n일 때*을 출력하도록
그리고 다 만든 뒤 리버스로 만들 때도 마찬가지의 조건을 걸어 주었다.
fun main() {
val n = readln().toInt()
for (x in 1 until n){
for (y in 1 until n - x + 1){
print(" ")
}
for (y in 1 until 2 * x){
print("*")
}
println()
}
for (x in n downTo 1){
for (y in 1 until n - x + 1){
print(" ")
}
for (y in 1 until 2 * x){
print("*")
}
println()
}
}
https://www.acmicpc.net/problem/10988
이 문제도 reversed() 라는 함수로 쉽게 문자를 뒤집어서 비교해볼 수 있기에 간편하게 풀 수 있었다.
fun main() {
val str = readln()
if(str == str.reversed()){
println("1")
} else {
println("0")
}
}
https://www.acmicpc.net/problem/1157
이 문제를 이해하는 데 시간이 걸렸지만
문자열을 하나씩 따와서 그것을 List안에 넣고 수를 옆에 넣어주어
Map <char, Int> 형식으로 만들어 주고 char에는 내가 입력한 문자열의 알파벳들이
Int에는 그 알파벳의 수를 Map안에 넣어주었다.
다 넣었다면 문자열 중 가장 많이 들어가있는 알파벳을 가져오는 max를 만들어주고
그것이 1보다 크다는 의미는 그 문자열이 만약 하나의 문자열만 받을 때는
또 그 알파벳이 가장 많기에 출력해야한다.
조건을 이해하는데 상당히 어려웠지만 좋은 문제였다.
fun main(){
val str = readln()
val strMap = mutableMapOf<Char, Int>()
str.forEach {
val char = it.lowercaseChar()
if(strMap.containsKey(char)){
strMap[char] = strMap[char]!!.plus(1)
} else {
strMap[char] = 1
}
}
val max = strMap.maxBy { it.value }
if(strMap.filter { it.value == max.value }.count() > 1){
print("?")
} else {
print(max.key.uppercaseChar())
}
}
점점.. 알아야 할 함수들이 많아지는 것 같다.
내장함수에 대해 한 번 정리를 해야겠다.