💻 하나씩 차곡차곡/프로그래머스 (Python)
코딩 기초 트레이닝 Day25 - 정수를 나선형으로 배치하기, 특별한 이차원 배열 2, 정사각형으로 만들기, 이차원 배열 대각선 순회하기
뚜루리
2023. 11. 8. 07:00
728x90
320x100
정수를 나선형으로 배치하기
def solution(n):
answer = [[None for j in range(n)] for i in range(n)]
move = [[0, 1], [1, 0], [0, -1], [-1, 0]]
x, y, m = 0, 0, 0
for i in range(1, n**2 + 1):
answer[y][x] = i
if y + move[m][0] >= n or x + move[m][1] >= n or answer[y + move[m][0]][x + move[m][1]]:
m = (m + 1) % len(move)
y, x = y + move[m][0], x + move[m][1]
return answer
def solution(n):
if n == 1:
return [[1]]
answer = [[0 for j in range(n)] for i in range(n)] # 배열 초기화
x = 0
y = 0
dir = 'r'
for i in range(n*n):
answer[x][y] = i + 1
if dir == 'r':
y += 1
if y == n-1 or answer[x][y+1] != 0: # 맨 끝에 도달했거나 가려는 곳에 이미 값이 있으면 방향 전환
dir = 'd'
elif dir == 'd':
x += 1
if x == n-1 or answer[x+1][y] != 0:
dir = 'l'
elif dir == 'l':
y -= 1
if y == 0 or answer[x][y-1] != 0:
dir = 'u'
elif dir == 'u':
x -= 1
if x == n-1 or answer[x-1][y] != 0:
dir = 'r'
return answer
- 출처 - 프로그래머스 다른사람 풀이 + https://oogg-zg3qy.tistory.com/12
- 이것은 내 풀이가 아니고 다른 분들의 풀이다. 나는 뜯어봐야 한다 ㅠ
특별한 이차원 배열 2
def solution(arr):
answer = 1
for i in range(len(arr)):
for j in range(len(arr[i])):
if arr[i][j] != arr[j][i]:
answer = 0
return answer
정사각형으로 만들기
def solution(arr):
answer = [[]]
x = len(arr)
y = len(arr[0])
if x > y :
for i in range(len(arr)):
for j in range(x-y):
arr[i].append(0)
elif x < y :
for i in range(y-x):
arr.append([0]*len(arr[0]))
else :
return arr
return arr
이차원 배열 대각선 순회하기
def solution(board, k):
answer = 0
for i in range(len(board)):
for j in range(len(board[i])):
if i+j <= k :
answer += board[i][j]
return answer
728x90
320x100