
반응형
오예 40분컷
문제
코드
# 0이 lst에 포함되어 있는지 여부
# 포함되어 있으면 True
# 포함되어 있지 않으면 False return
def zero_tf(lst):
result = False
for one_lst in lst:
if 0 in one_lst :
# print("있음")
return True
else:
# print("없음")
pass
return result
def solution(n):
if n == 1:
return [1]
# elif n == 2:
# return [1, 3, 2]
lst = [[0]*k for k in range(1, n+1)]
# print(lst)
num = 1
x, y = 0, 0
direction = [(1,0), (0,1), (-1,-1)]
direction_order = 0
while True:
if lst[x][y] == 0:
lst[x][y] = num
num+=1
# 만약 x와 y가 n을 초과하거나 0보다 작아질 경우
if (x+direction[direction_order][0] >= n) | (x+direction[direction_order][0] < 0) | (y+direction[direction_order][1] >= n) | (y+direction[direction_order][1] < 0):
direction_order = (direction_order + 1) % 3
x += direction[direction_order][0]
y += direction[direction_order][1]
#break
else:
# lst에 zero가 없으면 반복문을 멈춰라
if not zero_tf(lst):
break
# 채우려고 하는 곳이 0이 아닐 경우
# 원상복구 후
x -= direction[direction_order][0]
y -= direction[direction_order][1]
# print("원상복구된 x, y: ", x, y)
# 방향을 바꿔라
direction_order = (direction_order + 1) % 3
x += direction[direction_order][0]
y += direction[direction_order][1]
# print(lst, "================== lst ")
answer = []
for one_lst in lst:
answer = answer + one_lst
return answer
설명
처음에는 감이 안잡혀서 하나씩 다 적어봤다
그랬더니 반복되는 것이 보였다
** (1,0) => (0, 1) => (-1, -1) 씩 증가하는 것이 반복된다
리스트보다 큰 인덱스를 찾으려고 하거나, 0보다 작은 인덱스가 나오면 방향을 바꿔주었다.
혹은 값이 채워져있는 공간일 경우 방향을 바꿨다.
방향은 direction= [(1,0), (0, 1), (-1, -1)]
이렇게 변수에 담아놓고 direction_order를 바꿔주면서 사용했다
총 3개라서 3으로 나눈 나머지를 구해서 0, 1, 2 만 나오게끔 하였다
list가 전부 0이 아닌지 체크하는 zero_tf 함수도 만들어서 확인해주었다.
하나씩 적어봐서
인덱스가 (1,0) => (0, 1) => (-1, -1) 씩 반복적으로 증가하는 것을 확인함
(더보기 클릭시 하나씩 적은 과정 확인가능)
더보기
lst[0][0] = 1
lst[1][0] = 2
lst[2][0] = 3
lst[3][0] = 4
=> x가 1씩 증가
=> x가 초과하면
=> (+1, 0)
lst[3][1] = 5
lst[3][2] = 6
lst[3][3] = 7
=> y가 1씩 증가
=> y가 초과하면
=> (0, +1)
lst[2][2] = 8
lst[1][1] = 9
=> x, y 둘다 -1씩
=> (-1, -1)
lst[2][1] = 10
=> (+1, 0)
=> (0, +1)
=> (-1, -1)
반응형
'코테공부' 카테고리의 다른 글
[Python] 연습문제 : 뒤에 있는 큰 수 찾기 (0) | 2024.10.12 |
---|---|
[Python] PCCE 기출문제 8번 : 닉네임 규칙 (0) | 2024.09.21 |
[Python] 2019 카카오 개발자 겨울 인턴십 : 튜플 (0) | 2024.01.02 |
[Python] 동적계획법(Dynamic Programming) : 정수 삼각형 (0) | 2024.01.01 |
[Python] 월간 코드 챌린지 시즌2 : 약수의 개수와 덧셈 (0) | 2023.12.31 |