Day25 이차원 리스트(배열)
- 정수를 나선형으로 배치하기
- 특별한 이차원 배열 2
- 정사각형으로 만들기
- 이차원 배열 대각선 순회하기
정수를 나선형으로 배치하기
문제 설명
양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
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
이 문제는 도저히 혼자 힘으로 풀 수가 없어서,, 도움을 .. 받았다
move에 이동할 좌표를 담음, 순서는 우>하>좌>상
처음에 아래로 이동하는데 y좌표가 왜 +1인가 했는데
값 기준이 아니라 인덱스 기준으로 움직이니까 아래로 갈 때 +1 위로 갈때 -1이다.
move[m][0] > 0번째 인덱스는 항상 y 좌표 (0 or -1 or +1)
move[m][1] > 1번째 인덱스는 항상 x 좌표 (0 or -1 or +1)
move값으로 방향에 따라 이동하다 값이 n보다 커지면 방향을 바꿈(m값 변경)
m은 방향 맨처음 m=0 우로 이동 > m=1 하 > m=2 좌 m=3 상
아~~~~~~~~~~ 어렵다 큰일났다
특별한 이차원 배열 2
문제 설명
n × n 크기의 이차원 배열 arr이 매개변수로 주어질 때, arr이 다음을 만족하면 1을 아니라면 0을 return 하는 solution 함수를 작성해 주세요.
0 ≤ i, j < n인 정수 i, j에 대하여 arr[i][j] = arr[j][i]
def solution(arr):
answer = 0
length = len(arr[0])
for i in range(length):
for j in range(length):
if arr[i][j] == arr[j][i]:
continue
else:
return 0
return 1
정사각형으로 만들기
문제 설명
이차원 정수 배열 arr이 매개변수로 주어집니다. arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고, 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
def solution(arr):
arrLen = len(arr)
arrarrLen = len(arr[0])
gap = arrLen-arrarrLen
if len(arr) == len(arr[0]):
return arr
elif len(arr) > len(arr[0]):
for i in range(len(arr)):
for _ in range(gap):
arr[i].append(0)
else:
for _ in range(abs(gap)):
arr.append([0]*arrarrLen)
return arr
행 길이가 더 길면 열에 행-열 차이만큼 0 추가하기
열 길이가 더 길면 0으로 채워진 열 길이만큼의 배열을 행에 추가하기
어렵다 .....그래두 풀었다 ....
이차원 배열 대각선 순회하기
문제 설명
2차원 정수 배열 board와 정수 k가 주어집니다.i + j <= k를 만족하는 모든 (i, j)에 대한 board[i][j]의 합을 return 하는 solution 함수를 완성해 주세요.
def solution(board, k):
answer = 0
for i in range(len(board)):
for j in range(len(board[0])):
if i + j <= k:
answer += board[i][j]
return answer
이중 포문으로 이차원 배열 반복 인덱스 i+j가 k보다 작을때, 해당 인덱스의 값을 answer에 계속 더함
손으로 먼저 다 풀고 코드치는게 훨씬 머리 잘 돌아가고 빠르다.
점점 더 어려워지면 먼저 코드칠 생각은 꿈에도 못하겠지 ...
마지막 날이라고 갑자기 난이도가 확 ㅠㅠ 뛰어버린 ... 이것저것 하다가 4문제 이틀이 되어서야 다 풀어버린. ..!!
그래도 다 풀었다 기초 트레이닝 문제 25일차까지 완 !!!! 뿌듯 ....
쉬운 문제도 많았지만 애매하게 헷갈리는 문제들도 많았어서 딱 기초 감잡기에 좋은 코스인 것 같다
대충 감은 잡았으니 이제 알고리즘 차근차근 공부하면서 주제 별로 문제 푸는 연습도 해봐야겠다
밀린 날도 며칠 있었지만 그래도 매일 풀려고 했고 반정도는 성공한듯? 수고했따 더 열심히 하렴
'코테' 카테고리의 다른 글
프로그래머스 기초문제 Day24 조건문 활용, 반복문 활용, 이차원 리스트(배열) (1) | 2024.01.25 |
---|---|
프로그래머스 기초문제 Day23 조건문 활용 (1) | 2024.01.24 |
프로그래머스 기초문제 Day22 함수(메서드), 조건문 활용 (0) | 2024.01.23 |
프로그래머스 기초문제 Day21 함수(메서드) (1) | 2024.01.22 |
프로그래머스 기초문제 Day20 함수(메서드) (0) | 2024.01.20 |