14939번: 불 끄기 어제 99클럽 알고리즘 스터디에서 봤던 문제랑 유사하지만 약간 다른 점이 있다. 불가능한 경우가 존재하고 불가능할 경우 -1을 출력해야한다는 점 상태가 켜고 끄는 2가지 경우에 열이 10칸이므로 한 줄당 2^10(1024)가지의 경우의 수가 있다는 점 어제는 4방향 * 최대 8칸으로 4^8(65,536)가지의 경우의 수 어제 첫 줄부터 고정시켜 놓으며 바로 아래 줄의 회전 횟수가 정해진다는 아이디어를 듣고 나서 문제를 풀어보려고 시도했으나 이를 어떻게 구현해야할지 감이 잘 안잡혔다. 결국 다른 분들 풀이를 참조했다. [백준] 14989 - 불 끄기 💡 / 플래티넘 5 / 브루트포스 & 그리디 [백준 14939번] 파이썬 - 불끄기 풀이 현재 줄의 상태에 따라 바로 아랫줄의 점등 여..
비트마스킹
톱니바퀴를 회전시킬 때는 방향과 회전시킬 톱니바퀴를 선택한다. 톱니바퀴와 맞닿은 다른 톱니바퀴의 극이 서로 다르다면 → 맞닿은 톱니바퀴는 해당 톱니바퀴의 반대방향으로 회전 모든 회전이 끝나면 12시방향이 S극이면 + 2^(N - 1) 점 3번 톱니바퀴는 맞닿아있는 4번 톱니바퀴와 극이 다르다. 1회전 시 3번 톱니바퀴는 반시계, 4번 톱니바퀴가 시계방향으로 움직인다. 이제 1번 바퀴를 시계 방향으로 움직인다. 2번 바퀴와 극이 다르므로 2번은 반시계방향으로 움직인다. 1,2,3번 바퀴가 12시방향에 S극이다. 따라서, 1 + 2 + 4 = 7점 K가 100으로 매우 작음 오른쪽 바퀴 회전 여부 → 현재 바퀴[2]와 다음 바퀴[6]이 서로 다른지 확인 왼쪽 바퀴 회전 여부 → 현재 바퀴[6]과 다음 바퀴[..