Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Pythonで島探し (paizaランク S 相当) を解く

More than 1 year has passed since last update.

初めに

paizaのレベルアップ問題集を解いていたのですが、模範解答がなかったので自分で作ってみました。
言語はPython3です。

問題

Paizaのスキルチェック見本問題「島探し (paizaランク S 相当)」
https://paiza.jp/works/mondai/skillcheck_sample/search-island?language_uid=python3
ログインしないと問題文が見れませんでした。
登録は無料ですぐにできるので、とりあえず登録してみることをおススメします。

解答コード

find_lands.py
col, row = map(int, input().split())
map_list = [[0]* (col+2)]
for _ in range(row):
    map_list.append([0] + list(map(int, input().split())) + [0])
map_list.append(map_list[0])

def check(x, y):
    lands = [[x,y]]

    while lands:
        x, y = lands.pop()
        map_list[y][x] = 0
        # down 
        if map_list[y+1][x] == 1:
            lands.append([x, y+1])
        # right
        if map_list[y][x+1] == 1:
            lands.append([x+1, y])
        # up
        if map_list[y-1][x] == 1:
            lands.append([x, y-1])
        # left
        if map_list[y][x-1] == 1:
            lands.append([x-1, y])

count = 0
for r in range(1, row+1):
    for c in range(1, col+1):
        if map_list[r][c] == 1:
            check(c, r)
            count += 1

print(count)

参考

まとめ

初めでQiitaの記事を書いてみましたが、シンプルで使いやすくていいですね!
これからちょくちょく使っていけたらいいなと思います。

rA9-S
pythonで機械学習を勉強しています。まずは備忘録として使用していこうかと思います。 初心者ですので何か間違っているところがあれば優しく教えて下さるとありがたいです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away