갑자기 난이도가 확 올라가네...
https://school.programmers.co.kr/learn/courses/30/lessons/181832
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
# 구현
def solution(n):
answer = [[0]*n for _ in range(n)]
#우,하,좌,상 -> 나선형으로 해야 하므로
dx=[0,1,0,-1]
dy=[1,0,-1,0]
x,y=0,0
answer[x][y]=1 # 처음 시작 1로 초기화
k=2
while k<=n*n:
for i in range(4):
while True:
nx=x+dx[i]
ny=y+dy[i]
if nx>=n or ny>=n or nx<0 or ny<0 or answer[nx][ny]!=0:
break
else:
answer[nx][ny]=k
x=nx
y=ny
k+=1
return answer
- 결국 못풀었다...구현으로 풀 생각을 못했다!
- 단순 구현으로 푼 문제. 단 움직임을 조절하는 dx, dy가 우,하,좌,상 순으로 해야 나선형으로 움직일 수 있다.
- 움직이면서 배열 이내에 위치하고 움직일 위치에 0이 있으면 수를 입력한다.
- 다른 사람들은 직접 방향을 설정하는 변수를 만들고 입력가능한 배열의 끝에 도달하면 뱡향을(r,d,l,u)바꿔주는 방식으로 구현하기도 함.
# 참고
(python)프로그래머스-정수를 나선형으로 배치하기
문제 설명양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 0부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.1 ≤ n ≤ 30
velog.io
'코딩테스트' 카테고리의 다른 글
[Python] DFS 문제 풀이 정리 (0) | 2024.04.12 |
---|---|
[Python] 그리디 (0) | 2024.04.09 |
[Python] 프로그래머스 - 안전지대 (0) | 2024.04.03 |
[Python] ECC 3주차 정리 - 탐색 (0) | 2024.04.03 |
[Python] ECC 2주차 정리 - 정렬 (1) | 2024.03.29 |