개발/코테

[코드트리 조별과제] 6주차 - dx dy technique

su-mmer 2024. 8. 25. 21:41
728x90

# 이동할 위치가 격자 밖이거나 !=0이면 방향 전환 (dir_num + 1) % 4
# 이후에 알파벳 입력
# Z 다음에 A로 변환 필요

n, m = map(int, input().split())
arr = [[0 for _ in range(m)] for _ in range(n)]

def in_range(x, y):
    return 0 <= x and x < n and 0 <= y and y < m


dxs, dys = [0, 1, 0, -1], [1, 0, -1, 0]  # 격자
x, y = 0, 0  # 시작 위치
dir_num = 0  # 초기 방향(오른쪽)
arr[x][y] = ('A')  # 시작 위치의 값
for i in range(1, n * m):
    nx, ny = x + dxs[dir_num], y + dys[dir_num]
    if not in_range(nx, ny) or arr[nx][ny] != 0:
        dir_num = (dir_num + 1) % 4
    
    x, y = x + dxs[dir_num], y + dys[dir_num]
    arr[x][y] = chr(ord('A')+(i % 26))  # 아스키변환 사용
    

for i in range(n):
    for j in range(m):
        print(arr[i][j], end=' ')
    print()

 

https://www.codetree.ai/missions/5/problems/snail-alphabet-square?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

dx dy Technique 처음 할 때는 이해가 안 돼서 공책에 손으로 방향 잡아서 그러가면서 개념 이해했다.

dx dy로 방향 움직이는 게 파이썬 거북이 움직이는 거 했을 때가 생각나서 재밌었다.

이제는 한 번에 코드를 짤 수가 없어서 어떻게 구현할지 순서를 써놓고 그대로 코드를 작성했다.

마지막까지 재밌었다! 좋은 코딩 공부 플랫폼을 알게된 것 같다.

728x90