문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq
나의 코드
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1,T+1):
print(f"#{test_case}")
target = int(input())
result = [[0]*target for i in range(target)]
way = [[0,1], [1,0], [0,-1], [-1,0]]
way_idx= 0
point = [0,0]
for value in range(1,target*target+1):
result[point[0]][point[1]] = value
tmp_x, tmp_y = point[0]+way[way_idx][0], point[1]+way[way_idx][1]
if min(tmp_x,tmp_y)<0 or max(tmp_x,tmp_y)>=target or result[tmp_x][tmp_y] !=0:
way_idx = (way_idx+1)%4
tmp_x, tmp_y = point[0]+way[way_idx][0], point[1]+way[way_idx][1]
point[0], point[1] = tmp_x, tmp_y
for i in result:
print(" ".join(map(str,i)))
다른 글에서 달팽이문제를 재귀로 해결한 적이 있다.
https://lyeong-gwa.tistory.com/14?category=942910
하지만 numpy를 사용한다는 점이 마음에 들지 않았고 시간이 필요한 코딩테스트에서 해당 달팽이 구현 코드는 복잡하여 쓰기 힘든 문제가 있다고 생각한다.
그래서 단순하게 구현할 수 있는 버전을 생각하여 작성해보았다.
-----------------------------------------------------------------------------------------------------------------------------------당황한 점, 보완할 점
1. " ".join(map(str,i))
리스트 값들을 문자열로 출력하는 코드 : 오랫동안 안쓰니 잊어버린 코드(검색해서 확인)
'공부-코딩테스트 > 코테풀이 - 자바, 파이썬' 카테고리의 다른 글
3131. 100만 이하의 모든 소수 (코딩테스트, SW Expert Academy) (0) | 2022.04.24 |
---|---|
암호생성기 (코딩테스트, SW Expert Academy) (0) | 2022.04.19 |
2805. 농작물 수확하기 (SW Expert Academy, 코딩테스트) (0) | 2022.04.15 |
[1차] 캐시 (코딩테스트, 프로그래머스) (0) | 2022.04.14 |
다음 큰 숫자 (프로그래머스, 코딩테스트) (0) | 2022.04.13 |
댓글