삼각 달팽이
골 때리는 문제였다..
처음에는 어떤 규칙을 찾아서 배열에 착착착 넣고 싶었는데
아무리 짱구를 굴려봐도 잘 안됐다.그래서 그냥 달팽이에 채울 숫자의 최대값을 구하고
n*n배열에 값을 채워넣는다.이 때, 아래와 같이 채워넣어야 하기 때문에 flag를 이용하여
수를 채우는 방향을 바꿔주는 조건을 설정하여각 조건에 맞으면 채워넣는 방향을 바꿔주면서 계속 진행한다.
뭐랄까 좀더 formal한 방법을 생각해내고 싶었지만 머리가 아파서 그만!
끝 !!
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