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 |