본문 바로가기
알고리즘?/swea d2

swea 1954. 달팽이 숫자

by 몰라닉네임 2023. 5. 16.

[문제]

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PobmqAPoDFAUq&categoryId=AV5PobmqAPoDFAUq&categoryType=CODE&problemTitle=&orderBy=INQUERY_COUNT&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

[풀이]

i  j cnt
0 0 1
0 1 2
0 2 3
0 3 4

(i+1, j)
1 3 5
2 3 6
3 3 7
(i, j-1)

.

. (규칙)

     우 하 좌 상
i값    0 +1 - -1 
j값    +1 0 -1 0

.

4X4 달팽이 출력


.

 

 

[소스코드]

import sys
sys.stdin=open("input.txt", "rt")

T=int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
di=[0,1,0,-1]
dj=[1,0,-1,0]
for test_case in range(1, T+1):
    n=int(input())
    arr=[[0]*n for _ in range(n)] # 2차원 배열 0으로 초기화

    i,j,cnt, dr=0, 0, 1, 0 # 초기화
    arr[i][j]=cnt
    cnt+=1

    while cnt<=n*n:
        ni, nj=i+di[dr], j+dj[dr]
        if 0<=ni<n and 0<=nj<n and arr[ni][nj]==0:
            i, j=ni, nj
            arr[i][j]=cnt
            cnt+=1
        else:
            dr=(dr+1)%4

    print(f'#{test_case}')
    for i in arr:
        print(*i)

 

[결과사진]

'알고리즘? > swea d2' 카테고리의 다른 글

swea 2005. 파스칼의 삼각형  (0) 2023.05.16
swea 2007. 패턴마디의 길이  (0) 2023.05.16
swea 1926. 간단한 369게임 (숫자 쪼개기)  (0) 2023.05.15
swea 1204. 최빈수 구하기  (0) 2023.05.15