일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- python
- 14499번
- 미세먼지 안녕!
- 17144번
- QueryDSL 기초
- 수식 최대화
- 백준 알고리즘
- 키패드 누르기
- 감소하는 수
- 경주로 건설
- 1038번
- SW ExpertAcademy
- 16234번
- 어른 상어
- HTML 기초
- 19238번
- 2020 카카오 인턴십
- 거울 설치
- 12865번
- 스타트 택시
- 보석 쇼핑
- 베스트엘범
- 15686번
- 12869번
- 9095번
- 빛의 경로 사이클
- SW Expert Academy
- 프로그래머스
- 1789번
- 파이썬
Archives
- Today
- Total
보물창고 블로그
SW Expert Academy 1954. 달팽이 숫자 본문
728x90
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
나는 while문을 이용하여 해결하였다. 먼저 n을 인풋으로 받아서 n X n의 리스트를 만든 뒤에, 동남서북 방향 순서로 맵의 끝에 다다르거나 가려는 방향에 값이 0 이 아닐 경우에 방향을 바꾸도록 하였다. 풀이 코드는 다음과 같다.
t=int(input())
for test in range(1,t+1):
n=int(input())
map1=[[0 for _ in range(n)] for _ in range(n)]
dx=[0,1,0,-1]
dy=[1,0,-1,0]
d=0
x=0
y=0
n1=1
while(1):
if n1==pow(n,2)+1:
break
if -1<x<n and -1<y<n and map1[x][y]==0:
map1[x][y]=n1
x+=dx[d]
y+=dy[d]
n1+=1
else:
x-=dx[d]
y-=dy[d]
d+=1
if d>3:
d%=4
x+=dx[d]
y+=dy[d]
map1[x][y]=n1
n1+=1
x+=dx[d]
y+=dy[d]
print('#{}'.format(test))
for i in range(n):
s=''
for j in range(n):
s+=str(map1[i][j])+' '
print(s)
'알고리즘 풀이 > SW Expert Academy' 카테고리의 다른 글
SW Expert Academy 2382. [모의 SW 역량테스트] 미생물 격리 (0) | 2020.03.04 |
---|---|
SW Expert Academy 2383. [모의 SW 역량테스트] 점심 식사시간 (0) | 2020.03.04 |
SW Expert Academy 1210. [S/W 문제해결 기본] 2일차 - Ladder1 (0) | 2020.01.28 |
SW Expert Academy 1249. [S/W 문제해결 응용] 4일차 - 보급로 (0) | 2020.01.28 |
SW Expert Academy 1244. [S/W 문제해결 응용] 2일차 - 최대 상금 (0) | 2020.01.28 |
Comments