console.log

[SWEA] 2819 격자판의 숫자 이어 붙이기 JAVA 본문

알고리즘/SW Expert Academy

[SWEA] 2819 격자판의 숫자 이어 붙이기 JAVA

foresight 2023. 10. 6. 19:55

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7I5fgqEogDFAXB 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

메모리 : 63816 kb
실행시간 : 208 ms

 

문제분석

완탐 문제 + 중복 방지 위해 HashSet 사용

 

걸린시간

40분 ⏱️

 

풀이방법

1. 모든 위치에서 7글자 만드는 모든 경우의 수 확인
2. 결과를 HashSet에 저장

 

포인트

완탐, 해시셋을 이용한 중복 제거

 

코드

package study.day0825;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;

public class SWEA_2819_격자판의숫자이어붙이기 {	// 메모리 : 63816 kb	실행시간 : 208 ms
	static String[][] map = new String[4][4];
	static int[] dx = {0, 0, 1, -1};	// 동 -> 서 -> 남 -> 북
	static int[] dy = {1, -1, 0, 0};
	static HashSet<String> result;
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int T = Integer.parseInt(br.readLine());
		for (int t = 1; t <= T; t++) {
			result = new HashSet<>();
			for (int i = 0; i < 4; i++) {
				String[] temp = br.readLine().split(" ");
				for (int j = 0; j < 4; j++) {
					map[i] = temp.clone();
				}
			}

			for (int i = 0; i < 4; i++) {	// 모든 위치에서 7글자 문자 만들어서 list에 저장 (HashSet 사용해서 자동 중복제거)
				for (int j = 0; j < 4; j++) {
					sevenNum(i, j, map[i][j], 0);
				}
			}
			sb.append("#" + t + " " + result.size() + "\n");
		}
		System.out.println(sb);
	}
	private static void sevenNum(int r, int c, String str, int cnt) {
		if(cnt == 6) {
			String temp = str;
			result.add(temp);
			return;
		}
		for (int i = 0; i < 4; i++) {	// 사방탐색
			int nr = r + dx[i];
			int nc = c + dy[i];
			if(isIn(nr, nc)) sevenNum(nr, nc, str + map[nr][nc], cnt + 1);
		}
	}
	private static boolean isIn(int r, int c) {
		if(r >= 0 && r < 4 && c >= 0 && c < 4) return true;
		return false;
	}
}

'알고리즘 > SW Expert Academy' 카테고리의 다른 글

[SWEA] 2115 벌꿀채취 JAVA  (1) 2023.10.09
[SWEA] 1952 수영장 JAVA  (0) 2023.10.08
[SWEA] 2117 홈 방범 서비스 JAVA  (0) 2023.10.07
[SWEA] 1227 미로2 JAVA  (0) 2023.10.05
[SWEA] 5653 줄기세포배양 JAVA  (0) 2023.09.25