예상 대진표

최진훈·2022년 4월 27일
0

programmers

목록 보기
66/73


몇명이 참가하는지는 중요하지않고 그냥 라운드가 진행될때마다 answer를 1씩 올려주는 방법으로 풀어볼 것이다. 문제에서 주어지는 ab가 이겼을때 배정받는 다음 번호는 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


코틀린에서 올림을 할때 사용하는 함수를 찾아보았다.

  1. ceil을 사용할 것이기 때문에 입력받는 a, bDouble형태의 변수로 저장한다.
  2. 반복문을 하나 만들어서 한 라운드가 돌때마다 answer를 1씩 올려준다.
  3. firstsecond를 2로 나눈값을 ceil함수를 통해 올림을 해준다.
    4-1. 만약 first가 짝수라면 fisrt의 계산된값(=다음라운드에서 배정받을 번호)이 second보다 1이 작을때 break
    4-2. first가 홀수라면 first의 계산된값이 second보다 1클때 break해준다.
  4. 그때의 answer값을 리턴한다.

레고레고

바로 테스트를 해보자

딱 세문제에서 시간초과가 뜬다. 다른 케이스들의 연산시간이 아주 짧은데 세문제는 시간초과가 뜨는걸보면 뭔가 놓치고있는 특이한 예외가 있는것 같다.

질문하기를 찾아보니 둘중 하나의 처음 부여받은 번호가 1일경우의 케이스를 보면 1을2로 나누고 올림하는 연산이 들어간 뒤에 라운드를 올려주는 구조이므로 잘못된 결과가 도출된다. 따라서 순서를 조금 조정했다.

통과~!~!

profile
레고레고

0개의 댓글