반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 디렉토리계층구조
- union
- fastapi
- 코어뱅킹
- 맥북환경설정
- Homebrew
- MSA
- jdk17
- jdk
- 컴퓨터공학학사취득
- it자격증
- 렌탈스튜디오창업
- oracleapex
- 은행IT
- 코딩테스트
- SQL
- 개인프로필스튜디오창업
- Pass By Value
- 모놀리식
- DB
- 인강빨리듣기
- 학점은행제
- python
- 계정계
- 오라클
- 맥북셋팅
- 학점은행제무료강의
- 프로그래머스
- 채널계
- 맥북
Archives
- Today
- Total
개발머해니
[프로그래머스] 정수를 나선형으로 배치하기 (python3) 본문
728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181832
풀이
[개요]
1. 오른쪽으로 돌다가 끝에 다다르면 아래쪽으로 방향 바꾸기
2. 아래쪽으로 돌다가 끝에 다다르면 왼쪽으로 방향 바꾸기
3. 왼쪽으로 돌다가 끝에 다다르면 위쪽으로 방향 바꾸기
[이슈]
끝을 어떻게 판단할 수 있을까?
1. 다음 좌표의 값이 0이 아니어야 함
2. 다음 좌표가 0보다 작거나, n보다 크거나 같으면 끝임
[파이썬문법]
1. 리스트 0으로 초기화 : answer = [[0 for i in range(n)] for j in range(n)]
정답코드
def solution(n):
answer = [[]]
answer = [[0 for i in range(n)] for j in range(n)]
val = 0
#우 하 좌 상
d = 0
dx = [0, 1, 0, -1] #행
dy = [1, 0, -1, 0] #열
#현재 좌표
cur = [0,0]
while val < n*n:
#현재좌표 값 채우기
val += 1
answer[cur[0]][cur[1]] = val
#다음 좌표
x = cur[0] + dx[d]
y = cur[1] + dy[d]
next = [x, y]
#print(f"next={next}")
#다음좌표값이 0보다 크면 방향 바꾸기
#다음좌표가 맨끝이면 방향바꾸기
if (x>n-1 or x<0 or y>n-1 or y<0) or answer[next[0]][next[1]] > 0:
if d < 3:
d += 1
else:
d = 0
#print(f"d={d}")
#현재좌표를 다음 좌표로 바꾸기
x = cur[0] + dx[d]
y = cur[1] + dy[d]
next = [x, y]
cur = next
#print(answer)
return answer
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준] 2606 - 바이러스 (python3) (0) | 2024.05.10 |
---|---|
[프로그래머스] 옹알이(1) (0) | 2024.03.25 |
[프로그래머스] 타겟넘버 (0) | 2024.01.05 |
[파이썬] 괄호 짝 확인하기 (0) | 2023.12.15 |
[파이썬] 런던 폭우 Ⅱ (0) | 2023.09.30 |