[プログラマーレベル2]カタツムリ
7216 ワード
📃 問題の説明
カタツムリ匹
[質問元:プログラマー]
👨💻 解決策
これは頭が痛い問題です.
最初はルールを見つけて、少しずつ配列に入れたいと思っていました.
いくらクレヨンしんちゃんを投げても、あまりよくありません.
カタツムリを満たす数字の最大値を要求するだけです
n*n配列を埋めます.
この場合、flagを使用して次のように充填する必要があります.
条件を設定して、塗りつぶしの方向を変更します.
各条件に該当する場合は、充填方向を変更して続行します.
何というか、もっと正式な方法を考えてみましたが、頭が痛いので止めました!
终わります!
👨💻 ソースコード def solution(n):
snail = [[0 for i in range(n)] for i in range(n)]
# 삼각 달팽이에 채울 숫자의 최대값
maxNum = n * (n // 2 + 1)
if not n & 1:
maxNum -= (n // 2)
top, bottom, left, right = 0, n - 1, 0, n - 1
flag = 0
row, col = -1, 0
for i in range(1, maxNum + 1):
if flag == 0:
row += 1
if row == bottom:
flag = 1
top += 1
left += 1
elif flag == 1:
col += 1
if col == right:
flag = 2
bottom -= 1
right -= 1
elif flag == 2:
row -= 1
col -= 1
if row == top or col == left:
flag = 0
top += 1
right -= 1
snail[row][col] = i
answer = []
for i in range(n):
for j in range(n):
if snail[i][j]:
answer.append(snail[i][j])
return answer
Reference
この問題について([プログラマーレベル2]カタツムリ), 我々は、より多くの情報をここで見つけました
https://velog.io/@choiyunh/프로그래머스-Level2-삼각-달팽이
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
これは頭が痛い問題です.
最初はルールを見つけて、少しずつ配列に入れたいと思っていました.
いくらクレヨンしんちゃんを投げても、あまりよくありません.
カタツムリを満たす数字の最大値を要求するだけです
n*n配列を埋めます.
この場合、flagを使用して次のように充填する必要があります.
条件を設定して、塗りつぶしの方向を変更します.
各条件に該当する場合は、充填方向を変更して続行します.
何というか、もっと正式な方法を考えてみましたが、頭が痛いので止めました!
终わります!
👨💻 ソースコード def solution(n):
snail = [[0 for i in range(n)] for i in range(n)]
# 삼각 달팽이에 채울 숫자의 최대값
maxNum = n * (n // 2 + 1)
if not n & 1:
maxNum -= (n // 2)
top, bottom, left, right = 0, n - 1, 0, n - 1
flag = 0
row, col = -1, 0
for i in range(1, maxNum + 1):
if flag == 0:
row += 1
if row == bottom:
flag = 1
top += 1
left += 1
elif flag == 1:
col += 1
if col == right:
flag = 2
bottom -= 1
right -= 1
elif flag == 2:
row -= 1
col -= 1
if row == top or col == left:
flag = 0
top += 1
right -= 1
snail[row][col] = i
answer = []
for i in range(n):
for j in range(n):
if snail[i][j]:
answer.append(snail[i][j])
return answer
Reference
この問題について([プログラマーレベル2]カタツムリ), 我々は、より多くの情報をここで見つけました
https://velog.io/@choiyunh/프로그래머스-Level2-삼각-달팽이
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
def solution(n):
snail = [[0 for i in range(n)] for i in range(n)]
# 삼각 달팽이에 채울 숫자의 최대값
maxNum = n * (n // 2 + 1)
if not n & 1:
maxNum -= (n // 2)
top, bottom, left, right = 0, n - 1, 0, n - 1
flag = 0
row, col = -1, 0
for i in range(1, maxNum + 1):
if flag == 0:
row += 1
if row == bottom:
flag = 1
top += 1
left += 1
elif flag == 1:
col += 1
if col == right:
flag = 2
bottom -= 1
right -= 1
elif flag == 2:
row -= 1
col -= 1
if row == top or col == left:
flag = 0
top += 1
right -= 1
snail[row][col] = i
answer = []
for i in range(n):
for j in range(n):
if snail[i][j]:
answer.append(snail[i][j])
return answer
Reference
この問題について([プログラマーレベル2]カタツムリ), 我々は、より多くの情報をここで見つけました https://velog.io/@choiyunh/프로그래머스-Level2-삼각-달팽이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol