몇명이 참가하는지는 중요하지않고 그냥 라운드가 진행될때마다 answer
를 1씩 올려주는 방법으로 풀어볼 것이다. 문제에서 주어지는 a
와b
가 이겼을때 배정받는 다음 번호는 2로 나누었을때와 같기 때문에 (짝수일 경우, 홀수일경우는 반올림) 반복문을 통해 라운드가 진행될때마다 반으로 나눠주고 두 수의 차이가 1일때의 answer
의 값을 리턴하면 될 것 이다.
source : https://notepad96.tistory.com/entry/Kotlin-%EB%B0%98%EC%98%AC%EB%A6%BC-%EC%98%AC%EB%A6%BC-%EB%82%B4%EB%A6%BC-round-ceil-floor
코틀린에서 올림을 할때 사용하는 함수를 찾아보았다.
ceil
을 사용할 것이기 때문에 입력받는 a
, b
를 Double
형태의 변수로 저장한다.answer
를 1씩 올려준다.first
와second
를 2로 나눈값을 ceil
함수를 통해 올림을 해준다.first
가 짝수라면 fisrt
의 계산된값(=다음라운드에서 배정받을 번호)이 second
보다 1이 작을때 break
first
가 홀수라면 first
의 계산된값이 second
보다 1클때 break
해준다.answer
값을 리턴한다.레고레고
바로 테스트를 해보자
딱 세문제에서 시간초과가 뜬다. 다른 케이스들의 연산시간이 아주 짧은데 세문제는 시간초과가 뜨는걸보면 뭔가 놓치고있는 특이한 예외가 있는것 같다.
질문하기를 찾아보니 둘중 하나의 처음 부여받은 번호가 1일경우의 케이스를 보면 1을2로 나누고 올림하는 연산이 들어간 뒤에 라운드를 올려주는 구조이므로 잘못된 결과가 도출된다. 따라서 순서를 조금 조정했다.
통과~!~!