a / b 형식에서 몫과 나머지를 이용하는 계산의 경우 3으로 나눈다고 가정했을 때
이 식을
int ans = n * m / 3;
if( n * m % 3) ans++;
이렇게 사용할 수 있다.
int ans = (n * m + 2) / 3
// ( 나누는 수 - 1 ) 만큼의 값을 더해서 나누면 원하는 값을 한번의 나눗셈 연산으로 구할 수 있다.
탐색 문제에 자주 나오는 4방향 direction의 경우
상하좌우 방향을 사용해야하는 경우
이렇게 사용할 수 있다.
int dir = 0; // 방향
dir = ( dir + 1 ) % 4;
// 0, 1, 2, 3, 0, 1, 2, 3... 이 반복된다
3, 2, 1, 0 의 순서로 돌려면 다음과 같이 하면 된다.
int dir = 0; // 방향
dir = ( dir + 3 ) % 4;
// 3, 2, 1, 0, 3, 2, 1, 0... 이 반복된다
thanks to. mola
'Problem Solving > 깨달은 점' 카테고리의 다른 글
modular 연산 특징 (2) | 2021.06.03 |
---|---|
[c++] using namespace std;를 쓰는게 왜 나쁜 습관인가요? (0) | 2021.02.26 |