티스토리 뷰

Question

Consider integer numbers from 0 to n - 1 written down along the circle in such a way that the distance between any two neighboring numbers is equal (note that 0 and n - 1 are neighboring, too).

Given n and firstNumber, find the number which is written in the radially opposite position to firstNumber.


Example

  • For n = 10 and firstNumber = 2, the output should be circleOfNumbers(n, firstNumber) = 7

    image

     


Input/Output

  • [execution time limit] 4 seconds (py3)

  • [input] integer n

    A positive even integer.

    Guaranteed constraints: 4 ≤ n ≤ 20.

  • [input] integer firstNumber

    Guaranteed constraints: 0 ≤ firstNumber ≤ n - 1.

  • [output] integer


MY_ANSWER

def circleOfNumbers(n, firstNumber):
    if n <= firstNumber*2:
        return firstNumber - n//2
    else:
        return firstNumber + n//2
  • n개의 점을 이용하여 원을 만들 때, firstNumber 반대편의 점을 반환하는 문제.

    image

예를 들어 firstNumber가 2일 때 반대편의 숫자는 7이다.

  • firstNumber에서 반대편의 숫자를 return 값으로 받아야하기 때문에 n에서 절반을 나눈 만큼 이동하면 반대편 값에 도달하게된다.
  • 그러나 firstNumber가 n의 절반값보다 크면 n에서 절반을 나눈만큼 정방향으로 이동하는 것이 아니라 역방향으로 이동해야 할 것 이다. 가령 firstNumber가 8인경우 반대값은 3이다.

Best_ANSWER

def circleOfNumbers(n, firstNumber):

    return (firstNumber + n//2)%n
  • firstNumber + n//2, firstNumber의 반대값을 찾기위해 n의 절반값만큼 이동하는 아이디어는 동일
  • firstNumber + n//2가 n보다 클 경우 %(나머지 값) 기호를 이용해 한바퀴 순회하는 형식으로 구현(My_answer처럼 조건문을 사용하지 않았다.)

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함