πŸ‘©β€πŸ’» SWEA_1861_μ •μ‚¬κ°ν˜• λ°©

YOU KNOW I MEANΒ·2021λ…„ 7μ›” 5일
0
post-thumbnail

πŸ’¬ λ‘œμ§μ„ λ¨Όμ € μƒκ°ν•˜κ³  μˆœμ„œμ— 맞게 μ½”λ“œλ₯Ό μ§°λ”λ‹ˆ μ‰½κ²Œ ν’€λ ΈμŠ΅λ‹ˆλ‹€.


πŸ’‘ 풀이 방법

  • μ²˜μŒλΆ€ν„° λλ°©κΉŒμ§€ λͺ¨λ‘ νƒμƒ‰ν–ˆμŠ΅λ‹ˆλ‹€. (완전탐색)
  • 이동할 수 μžˆλŠ” κ²½μš°μ— cntλ₯Ό μ¦κ°€μ‹œμΌ°μŠ΅λ‹ˆλ‹€.
  • 더 이상 이동이 λΆˆκ°€λŠ₯ν•œ 경우, 비ꡐλ₯Ό 톡해 μ μ ˆν•œ 값을 λ„£μ–΄μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.
    - maxCnt / cnt , max / tmp 비ꡐ

πŸ”₯ μ½”λ“œ

import java.util.Scanner;

public class SWEA_1861_μ •μ‚¬κ°ν˜•λ°© {
static int dx[] = {0, 0, 1, -1};
static int dy[] = {-1, 1, 0, 0};
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		
		for (int t = 1; t <= T; t++) {
			int n = sc.nextInt();
			int room[][] = new int[n][n];
			int tmp = 0; // ν˜„μž¬ μœ„μΉ˜μ˜ κ°’
			int cnt = 0; // μ΄λ™ν•œ 횟수
			int maxCnt = 0; // μ΅œλŒ€ 이동 횟수 
			int max = 0; // μ΅œλŒ€λ‘œ μ΄λ™ν•œ 방의 κ°’
			
			// 방의 값을 μ €μž₯
			for (int i = 0; i < n; i++) {
				for (int j = 0; j < n; j++) {
					room[i][j] = sc.nextInt();
				}
			}
			
			// λͺ¨λ“  방을 λ“€λ¦°λ‹€.
			for(int i = 0; i < n ; i++) {
				for(int j = 0; j < n; j++) {
					cnt = 0;
					boolean flag = true;
					
					// ν•΄λ‹Ή 값을 tmp에 λ„£λŠ”λ‹€. 
					tmp = room[i][j];
					
					int si = i;
					int sj = j;
					
					d: while(flag) {
						// 4λ°©νƒμƒ‰ν•΄μ„œ 갈 κ³³ μžˆλ‚˜ 보기
						c: for(int k = 0; k < 4; k++) {
							int di = si + dx[k];
							int dj = sj + dy[k];
							
							if(dj < 0 || di < 0 || dj >= n || di >= n) {
								if(k == 3) {
									flag = false;
									break d;
								}
								continue c; 
							}
							// ν˜„μž¬ μœ„μΉ˜λ³΄λ‹€ +1 큰 κ°’ μžˆλŠ”μ§€ 확인
							if(room[di][dj] == room[si][sj] + 1) {
								si = di;
								sj = dj;
								cnt++;
								break c;
							}
							
							if(k == 3) {
								flag = false;
								break d;
							}
							
						}
					}
					
					// 더이상 λ‚˜μ•„κ°ˆ 수 없을 λ•Œ, maxCnt와 Cntλ₯Ό λΉ„κ΅ν•œλ‹€.
					if(maxCnt > cnt) {
						continue;
					}
					else if (maxCnt < cnt) {
						maxCnt = cnt;
						max = tmp;
					}
					else {
						if(max > tmp) max = tmp;
					}
					
				}
			}
			
			// λ‹΅ 좜λ ₯
			System.out.print("#" + t + " " + max + " ");
			System.out.println(maxCnt + 1);
		}
	}
}

βš™οΈ 섀계

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보

Powered by GraphCDN, the GraphQL CDN