728x90
반응형
SMALL
Programmers 레벨 0_코딩 기초 트레이닝 문제 풀이
https://school.programmers.co.kr/learn/challenges/training?order=recent
코딩 기초 트레이닝 | 프로그래머스 스쿨
프로그래밍 언어를 처음 접하거나 프로그래밍 언어에 익숙해지고 싶다면? 코딩 역량을 탄탄하게 길러주는 코딩 기초 트레이닝으로 차근차근 코딩에 대한 기초 감각을 길러 보세요.
school.programmers.co.kr
풀이 날짜 : 2023-09-21
소요 시간 : 2hour
문제 설명
양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
반응형
나의 풀이
def solution(n):
answer = [[0]*n for _ in range(n)] # n*n 배열 생성
i, x, y = 1, 0, 0 # 인자로 넣을 값 i, (x, y) 좌표 초기값 설정
count = n
mode = 's' # 벽에 막혔을 때 방향 이동
while i < n*n+1 : # 1부터 n*n까지 반복한다.
if mode == 's' :
for j in range(count) :
answer[x][y+j] = i
i += 1
count -= 1
y += count
mode = 'd'
elif mode == 'r' :
for j in range(count) :
answer[x][y+(j+1)] = i
i += 1
y += count
count -= 1
mode = 'd'
elif mode == 'd' :
for j in range(count) :
answer[x+(j+1)][y] = i
i += 1
x += count
mode = 'l'
elif mode == 'l' :
for j in range(count) :
answer[x][y-(j+1)] = i
i += 1
y -= count
count -= 1
mode = 't'
elif mode == 't' :
for j in range(count) :
answer[x-(j+1)][y] = i
i += 1
x -= count
mode = 'r'
return answer
다른 풀이
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[x][y] = i
if x + move[m][0] >= n or y + move[m][1] >= n or answer[x + move[m][0]][y + move[m][1]]:
m = (m + 1) % len(move)
x, y = x + move[m][0], y + move[m][1]
return answer
for문 수행
1. 좌표에 차례대로 i 값을 넣는다.
2. if 조건문에 따라 추가 작업을 수행한다.
3. y와 x에 각각 좌표 이동값을 대입한다.
move = [[0, 1], [1, 0], [0, -1], [-1, 0]]
# 각각 y+1, x+1, y-1, x-1
if x + move[m][0] >= n or y + move[m][1] >= n or answer[x + move[m][0]][y + move[m][1]] :
m = (m + 1) % len(move)
이 조건 중 하나라도 만족하면 m에 (m+1) % len(move) 값을 대입
728x90
반응형
LIST
'Coding Study > Programmers (Python)' 카테고리의 다른 글
[프로그래머스/파이썬] Lv.0 정사각형으로 만들기 (16') (0) | 2023.09.21 |
---|---|
[프로그래머스/파이썬] Lv.0 특별한 이차원 배열 2 (8') (0) | 2023.09.21 |
[프로그래머스/파이썬] Lv.0 특별한 이차원 배열 1 (10') (0) | 2023.09.21 |
[프로그래머스/파이썬] Lv.0 l로 만들기 (5') (0) | 2023.09.21 |
[프로그래머스/파이썬] Lv.0 조건에 맞게 수열 변환하기 3 (3') (0) | 2023.09.21 |