본문 바로가기
CodeSignal

Circle of Numbers

by Doromi 2023. 12. 18.
728x90
반응형

0부터 n-1까지의 정수가 원 형태로 배치되어 있습니다. 이때 어떤 두 인접한 숫자 사이의 거리는 동일합니다. 그리고 문제에서는 어떤 숫자가 주어졌을 때, 그 숫자의 반대편에 위치한 숫자를 찾는 것입니다.

예를 들어, n이 4이고 firstNumber가 1이라면 숫자 0, 1, 2, 3이 원형으로 배치되어 있습니다.

0   1
  3   2

여기서 1이 주어졌을 때, 이 숫자의 반대편에 위치한 숫자는 3입니다. 따라서 답은 3이 됩니다.

이를 일반화하면, 주어진 firstNumber의 반대편 숫자는 (firstNumber + n / 2) % n으로 계산할 수 있습니다. 이 공식은 firstNumber에서 n/2만큼 떨어진 위치에 있는 숫자를 나타냅니다.

예시에서는 (1 + 4 / 2) % 4로 계산되어 3이 됩니다.

int solution(int n, int firstNumber) {
    int ret = (firstNumber)%n;
    if(ret>=(n/2)) return ret-(n/2);
    else return ret+(n/2);
}
더 간결한 코드로는
int solution(int n, int firstNumber) {
    return (firstNumber+(n/2))%n;
}

 

728x90
반응형

'CodeSignal' 카테고리의 다른 글

differentSymbolsNaive  (1) 2023.12.22
extractEachKth  (1) 2023.12.19
chessBoardCellColor  (2) 2023.12.17
stringsRearrangement  (1) 2023.12.17
absoluteValuesSumMinimization  (1) 2023.12.16