매일 백준의 알고리즘 문제를 풀며 3문제씩 풀며
한 언어를 마스터 할 것을 목표로 이 글을 작성할 예정입니다.
https://www.acmicpc.net/problem/10811
이 문제는 어제 풀었던 10813번과 유사한 문제인데
다른 점이 있다면 이건 i와 j사이의 모든 배열을 뒤집는 점이다.
그래서while문을 사용해서 i가 j가 되기 전까지 모든 배열을 뒤집어 주는 방법으로 풀어주면 된다.
또 어제 생각 못했지만 배열은 0부터 시작하기에 미리 i와 j에 -1을 미리 넣어 코드를 최소화 시켜주었다.
import java.util.Scanner
fun main() {
val sc = Scanner(System.`in`)
val n = sc.nextInt()
val m = sc.nextInt()
val array = IntArray(n) {it + 1}
val result = StringBuilder()
for (x in 0 until m){
var i = sc.nextInt() - 1
var j = sc.nextInt() - 1
while (i < j)
{
val temp = array[i]
array[i++] = array[j]
array[j--] = temp
}
}
for (y in array)
result.append("$y ")
println(result)
}
https://www.acmicpc.net/problem/1546
이건 n을 생성하여 배열을 몇 개를 받을지 정하고
mutableListOf로 배열 안의 값을 변경할 수 있도록 만들어 주었다.
배열을 새로 받아 주어야 하기에repeat문을 사용하여 n만큼 반복이 돌게 했고
그 사이에는 add를 하여 arr안에 Double로 배열을 받아 주었다.
다음 배열 안의 max값을 추출해주고
조건에 맞게 계산해 출력하면 끝이다.
import java.util.Scanner
fun main() {
val sc = Scanner(System.`in`)
val n = sc.nextInt()
val arr = mutableListOf<Double>()
repeat(n){
arr.add(sc.nextDouble())
}
val arrMax = arr.max()
for (i in 0 until n){
arr[i] = (arr[i] / arrMax) * 100
}
println("${arr.sum() / n}")
}
https://www.acmicpc.net/problem/27866
배열 파트가 끝나고 문자열로 다시 넘어 왔는데
문자열의 인덱스를 사용하는 간단한 문제였다.
fun main() {
val str = readlnOrNull().toString()
val n = readlnOrNull()?.toInt()
println(str[n!! - 1])
}
디버깅을 통해 실력이 점차 늘어나는 것 같아서 좋았고
내가 원하는 만큼 반복을 도는 repeat문을 처음 알았는데 굉장히 편했다.
앞으로도 새로운 문법을 많이 알아두어야 겠다.