예상 대진표
토너먼트 대회에서 참가자가 총 n명 있을때 a번의 참가자와 b번의 참가자가 만났을때 몇 번째 라운드인지 구하는 문제
1과2, 3과 4... 이런식으로 a와 b가 만났을때 라운드를 구하는 식으로 풀었는데 다른풀이를 보니 둘의 몫이 같을때를 구하면 쉽게 풀수있는 문제였다.
나의 풀이
class Solution {
fun solution(n: Int, a: Int, b: Int): Int {
var answer = 0
var aa = a
var bb = b
var count = 1
var total = n
while(total > 1){
for( j in 1..total step 2){
if(aa == j && bb == j + 1 || aa == j + 1 && bb == j){
answer = count
break
}
}
if(aa > 1 && aa % 2 != 0){
aa = aa / 2 + 1
} else if(aa > 1){
aa /= 2
}
if(bb > 1 && bb % 2 != 0){
bb = bb / 2 + 1
} else if (bb > 1){
bb /= 2
}
total /= 2
count++
}
return answer
}
}
class Solution {
fun solution(n: Int, a: Int, b: Int): Int {
var answer = 0
var x = a
var y = b
while (x != y) {
x = (x + 1) / 2
y = (y + 1) / 2
answer++
}
return answer
}
}
몫이 같을때까지 반복해 몇 번 반복했는지 반환
// 배열선언
var arr = arrayOf(1,2,3,4,5)
// 배열요소를 모두 출력합니다
println(Arrays.toString(arr)) // java.util.Arrays를 import해주어야함
println(arr[0])
for((idx, arr) in arr.withIndex()){
println("${idx}}번째 국어 점수는 ${arr}입니다")
}
// 읽기전용 리스트
var scores1 = listOf(값1, 값2, 값3)
// 수정가능 리스트
// .set으로 값을 수정가능
var scores2 = mutableListOf(값1, 값2, 값3)
scores2.set(인덱스, 값)
// 수정가능 리스트
// array로 데이터를 저장하고 mutableListOf처럼 사용할 수 있다(arrayList는 mutableList의 구현체)
var scores3 = ArrayList<자료형>(값1, 값2, 값3)
scores3.set(인덱스, 값)
// 읽기전용 맵
// 변수명[키]로 데이터에 접근
var scoreInfo1 = mapOf("kor" to 94, "math" to 90, "eng" to 92)
println(scoreInfo1["kor"])
// 수정가능 맵
// 변수명[키]로 데이터에 접근
var scoreInfo2 = mutableMapOf("kor" to 94, "math" to 90)
scoreInfo2["eng"] = 92
println(scoreInfo2["eng"])
// 맵의 키와 값을 동시에 추출하는 법
for((k,v) in scoreInfo2) {
println("${k}의 값은 ${v}입니다")
}
// 읽기전용 set
var birdSet = setOf("닭", "참새", "비둘기")
// 수정가능 Set
var mutableBirdSet = mutableSetOf("닭", "참새", "비둘기")
mutableBirdSet.add("꿩")
mutableBirdSet.remove("꿩")
println("${birdSet.size}")
var findBird = readLine()!!
if(birdSet.contains(findBird)) {
println("${findBird} 종류는 존재합니다.")
} else {
println("${findBird}는 존재하지 않습니다.")
}
var birdSet = setOf("닭", "참새", "비둘기", "물오리")
var flyBirdSet = setOf("참새", "비둘기", "까치")
// (합집합)
var unionBirdSet = birdSet.union(flyBirdSet) // [닭, 참새, 비둘기, 물오리, 까치]
// (교집합)
var intersectBirdSet = birdSet.intersect(flyBirdSet) // [참새, 비둘기]
// (차집합)
var subtractBirdSet = birdSet.subtract(flyBirdSet) // [닭, 물오리]
{매개변수1, 매개변수2... -> 코드 }
fun add(num1:Int, num2:Int, num3:Int) = (num1+num2+num3)/3
var add = {num1: Int, num2: Int, num3: Int -> (num1+num2+num3) / 3}
println("평균값은 ${add(10,20,30)}입니다")