티스토리 뷰

728x90

문제 링크

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

 

21873번: 개구리 징검다리 건너기

첫 번째 줄에 개구리들을 움직여야 하는 횟수 M을 출력한다. 단, M1500000을 넘어서는 안된다. 두 번째 줄부터 M개의 줄에 걸쳐서 움직인 개구리의 정보를 순서대로 출력한다. p번째

www.acmicpc.net

 

풀이

그림으로 그려보다 화가나서 웹으로 간단한 시뮬레이터를 만들어 규칙을 찾았습니다.

사람은 시각에 예민한 동물입니다..

 

 

1
1 2
1 2 3
...
1 2 3 ... n
1 2 3 ... n
1 2 3 ... n
2 3 ... n
3 ... n
...
n

이런 식으로 한 줄마다 이동해야 하는 개구리의 색이 바뀌게 됩니다.

 

정답 코드

const fs = require('fs');
const stdin = fs.readFileSync('/dev/stdin').toString().split('\n');
const input = (() => {
let line = 0;
return () => stdin[line++];
})();
const main = function () {
const n = +input();
let cur = 1, ans = '', cnt = 0;
for (let i = 1; i < n; i++) {
for (let j = 1; j <= i; j++) {
ans += `${cur} ${j}\n`;
cnt++;
}
cur = 3 - cur;
}
for (let k = 0; k < 3; k++) {
for (let i = 1; i < n + 1; i++) {
ans += `${cur} ${i}\n`;
cnt++;
}
cur = 3 - cur;
}
for (let i = 1; i < n; i++) {
for (let j = i + 1; j < n + 1; j++) {
ans += `${cur} ${j}\n`;
cnt++;
}
cur = 3 - cur;
}
ans = cnt + '\n' + ans;
console.log(ans);
};
main();
728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함