본문 바로가기

코딩테스트

[Python] 프로그래머스 - 정수를 나선형으로 배치하기

갑자기 난이도가 확 올라가네...

 

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)바꿔주는 방식으로 구현하기도 함.

 


# 참고

 

https://velog.io/@uuas5866/python%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A0%95%EC%88%98%EB%A5%BC-%EB%82%98%EC%84%A0%ED%98%95%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%B9%98%ED%95%98%EA%B8%B0

 

(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