解説
この問題では与えられる点の数がわからないため、while文を使って実装していきます。
まずは、N を受け取り、N×N の全てのマスが .
で埋められているキャンバスを用意します。
以下の手順を繰り返し、キャンバスに絵を描いていきます。
- 点 i の座標 (xi,yi) を受け取ります。このとき、(xi,yi)=(0,0) ならば絵を描くことをやめます。
- キャンバスのマス (xi,yi) に点
#
を描きます。
- i≥2 のときに、点 i−1 と点 i が同じ行または同じ列にある場合、次のように線を描きます。
- xi−1=xi の時 (同じ列に並んでいるとき)、min(yi−1,yi)≤k≤max(yi−1,yi) を満たす全ての整数 k に対して、マス (xi,k) に点
#
を描きます。
- yi−1=yi の時 (同じ行に並んでいるとき)、min(xi−1,xi)≤k≤max(xi−1,xi) を満たす全ての整数 k に対して、マス (k,yi) に点
#
を描きます。
最後に、絵を描き終えたキャンバスを出力します。
なお、点を描くマスの表記が、解説では(x,y)となっていることに対し、実装では canvas[y][x]
となることに注意してください。
解答例
解答例(C)
解答例(C++)
解答例(Python)