Notice
														
												
											
												
												
													Recent Posts
													
											
												
												
													Recent Comments
													
											
												
												
													Link
													
											반응형
    
    
    
  | 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
													Tags
													
											
												
												- 일본어공부
 - 프로그래머스
 - SWEA
 - 일본어학습지
 - 백준
 - js
 - 성인학습지
 - 코딩테스트
 - java
 - 마이라이트
 - 삼성소프트웨어아카데미
 - 자바스크립트
 - 가벼운학습지
 - mybatis
 - 카카오
 - 자료구조
 - 일본어독학
 - 가벼운학습지후기
 - 자바
 - stack
 - array
 - 코딩
 - javascript
 - 삼성
 - 코테
 - 정렬
 - 코테준비
 - 인프런
 - 스텍
 - 알고리즘
 
													Archives
													
											
												
												- Today
 
- Total
 
개발에 AtoZ까지
[JAVA][D2] 1954. 달팽이 숫자 본문
반응형
    
    
    
  문제
달팽이는 1부터 N*N까지의 숫자가 시계방향으로 이루어져 있다.
다음과 같이 정수 N을 입력 받아 N크기의 달팽이를 출력하시오.
[예제]
N이 3일 경우,
 
N이 4일 경우,
 
[제약사항]
달팽이의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10)
[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스에는 N이 주어진다.
[출력]
각 줄은 '#t'로 시작하고, 다음 줄부터 빈칸을 사이에 두고 달팽이 숫자를 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
예시
풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		try {
			int T = Integer.parseInt(br.readLine());
			// 테스트케이스 반복
			for (int i = 1; i <= T; i++) {
				int N = Integer.parseInt(br.readLine());
				int num=1;
				//x축 시작값
				int startX=0;
				//y축 시작값
				int startY=0;
				//x축 끝값
				int endX=N-1;
				//y축 끝값
				int endY=N-1;
				int[][] nums=new int[N][N];
				while(num<=N*N) {
					//좌측에서 우측으로  ->
					for(int j=startY;j<=endY;j++) {
						nums[startX][j]=num;
						num++;
					}
					startX++;
					//우측 상단에서 하단으로 
					for(int j=startX;j<=endX;j++) {
						nums[j][endY]=num;
						num++;
					}
					endY--;
					//우측에서 좌측으로
					for(int j=endY;j>=startY;j--) {
						nums[endX][j]=num;
						num++;
					}
					endX--;
					//좌측 하단에서 상단으로
					for(int j=endX;j>=startX;j--) {
						nums[j][startY]=num;
						num++;
						
					}
					startY++;
				}
				
				System.out.println("#" + i);
				for(int a=0;a<N;a++) {
					for(int b=0;b<N;b++) {
						System.out.print(nums[a][b]+" ");
					}
					System.out.println();
				}
				
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
반응형
    
    
    
  '코딩테스트 준비 > SWEA' 카테고리의 다른 글
| [JAVA][D2] 1945. 간단한 소인수분해 (0) | 2021.01.10 | 
|---|---|
| [JAVA][D2] 1946. 간단한 압축 풀기 (0) | 2021.01.10 | 
| [JAVA][D2] 1976. 시각 덧셈 (0) | 2021.01.10 | 
| [JAVA][D2] 1959. 두 개의 숫자열 (0) | 2021.01.10 | 
| [JAVA][D2] 1961. 숫자 배열 회전 (0) | 2021.01.10 | 
| [JAVA][D2] 1966. 숫자를 정렬하자 (0) | 2021.01.10 | 
| [JAVA][D2] 1970. 쉬운 거스름돈 (0) | 2021.01.10 | 
			  Comments
			
		
	
               
           
					
					
					
					
					
					
				