백준 1244 / 스위치 켜고 끄기 / JS

Jihoo·2021년 9월 11일
0

Algorithm

목록 보기
5/16

https://www.acmicpc.net/problem/1244

구현

남자의 경우, 배수가 되는 번호에 위치한 스위치를 전환합니다.
받은 수가 a이라면

a * 1, a * 2, a * 3, a * n...

이때 a * n에 해당하는 값이 스위치 배열의 바깥 범위를 참조하지 않도록 주의해야 합니다.

여자의 경우,
받은 수가 a라면 a를 기준으로 '대칭이 되는 최대 길이'에 위치한 스위치를 모두 전환합니다. 만약 대칭이 존재하지 않는 다면, 즉 '대칭이 되는 최대 길이'가 1이라면 a에 위치한 스위치만 전환합니다. 이때도 역시 스위치 배열의 바깥을 참조하지 않도록 주의해야 합니다.

 let lt = (rt = num);
 while (lt - 1 > 0 && rt + 1 < board.length) {
	if (board[lt - 1] === board[rt + 1]) {
		lt -= 1;
        rt += 1;
	} else {
		break;
	}
}
for (let k = lt; k <= rt; k++) {
	board[k] = board[k] === 1 ? 0 : 1;
}

0개의 댓글