백준 1913 - 달팽이

태태·2023년 5월 18일
0
post-thumbnail

문제

알고리즘 분류)

  • 구현

풀이

배열을 달팽이 모양처럼 출력하는 문제이다
처음에는 수학적인 어떠한 방법이 있을까하여 계속 고민했지만
결국 단순 인덱스놀이 문제라는 것을 깨달았다

내가 시도한 방법은!
[0,0]위치(값=N^2) 부터 가운데위치(값=1) 까지 인덱스를 채워나가는 방법이다

한바퀴를 순회하면 N을 1감소시켜 안쪽에서 돌도록 해주었다


소스코드

python)

N = int(input()) 
search_num = int(input())
loof = N #N값을 바꾸어 줄 것이므로 초기 N값 저장
num = N*N
array = [[0 for col in range(N)] for row in range(N)]
i=start=0
j=0
N-=1

for _ in range(((loof-1)//2)+1):
    while i<=N:
        array[i][j]=num
        num-=1
        i+=1
    i-=1
    j+=1
    
    while j<=N:
        array[i][j]=num
        num-=1
        j+=1
    j-=1
    i-=1
    
    while i >= start:
        array[i][j]=num
        num-=1
        i-=1
    start+=1
    j-=1
    i+=1
    
    while j >= start:
        array[i][j]=num
        num-=1
        j-=1
    j+=1
    i+=1
    
    
    N -= 1 #한바퀴 끝
    
for i in range(loof):
    print(*array[i])
    if search_num in array[i]:
        x = array[i].index(search_num)+1
        y = i+1
print(y,x)
profile
과정에서 재미를 느끼지 않는데 성공하는 일은 거의 없다

0개의 댓글