1954. 달팽이 숫자
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
- 내 풀이 - Python
T=int(input())
for test_case in range(1,T+1):
n=int(input())
snail=[[0 for _ in range(n)] for _ in range(n)]
#동남서북
x=[0, 1, 0, -1]
y=[1, 0, -1, 0]
i=0 #방향인덱스
k=1 #수
dx,dy=0,0;
snail[dx][dy]=k
for _ in range(n**2-1):
nx=dx+x[i%4]
ny=dy+y[i%4]
if nx<0 or nx>=n or ny<0 or ny>=n or snail[nx][ny]!=0:
i+=1
nx=dx+x[i%4]
ny=dy+y[i%4]
dx=nx
dy=ny
k+=1
snail[dx][dy]=k
print("#%d"%test_case)
for row in range(n):
for cal in range(n):
print(snail[row][cal], end=" ")
print()
- 내 풀이 - JAVA
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class SW1954_ParkSomin {
public static void main(String[] args) throws IOException {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st= new StringTokenizer(br.readLine());
int T= Integer.parseInt(st.nextToken());
for (int test_case=1; test_case<=T; test_case++){
int n= Integer.parseInt(new StringTokenizer(br.readLine()).nextToken());
int[][] snail= new int[n][n];
int[] x={0,1,0,-1};
int[] y={1,0,-1,0};
int idx=0;
int k=0;
snail[0][0]=++k;
int dx=0;
int dy=0;
for (int i=0; i< Math.pow(n,2)-1 ; i++){
int nx=dx+x[idx%4];
int ny=dy+y[idx%4];
if (nx<0 || nx>=n || ny<0 || ny>=n || snail[nx][ny]!=0 ){
idx++;
nx=dx+x[idx%4];
ny=dy+y[idx%4];
}
dx=nx;
dy=ny;
snail[dx][dy]=++k;
}
System.out.printf("#%d", test_case);
System.out.println();
for (int i=0;i<n;i++) {
for(int j=0;j<n;j++){
System.out.printf("%d ",snail[i][j]);
}
System.out.println();
}
}
}
}'코딩테스트 > SWEA' 카테고리의 다른 글
| [SW4008][DFS] 숫자 만들기 (0) | 2023.02.15 |
|---|---|
| [SW 1233][tree] 사칙 연산 유효성 검사 (0) | 2023.02.14 |
| [코테스터디] [그리디] [백준 1439] 문자열 뒤집기 (0) | 2023.01.26 |
| [코테스터디] [구현] [백준 18406] 럭키 스트레이트 (0) | 2023.01.26 |
| [코테스터디] [프로그래머스] [2019 KAKAO BLIND RECRUITMENT] 무지의 먹방 라이브 (0) | 2023.01.26 |