티스토리 뷰

Algorithm

백준_오목_2615

Young_J 2021. 1. 4. 22:49

// 알고리즘

1. 구현

 

2. 탐색 배열 사용

 -> 원래 8방 탐색을 해야하지만 왼쪽 위부터 검사한다면 4방 탐색으로도 가능

 -> 우상, 우, 우하, 하 

더보기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class 오목_2615_re {
	static int[] dr = { -1, 0, 1, 1 };
	static int[] dc = { 1, 1, 1, 0 };
	static int[][] map;

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		map = new int[20][20];

		for (int i = 1; i <= 19; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
			for (int j = 1; j <= 19; j++) {
				map[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		boolean flag = false;

		for (int r = 1; r <= 19; r++) {
			for (int c = 1; c <= 19; c++) {
				if (map[r][c] == 0)
					continue;
				for (int k = 0; k < 4; k++) {
					int num = 1;
					int cnt = 1;
					while (true) {
						int nr = r + dr[k] * cnt;
						int nc = c + dc[k] * cnt;

						if (check(nr, nc))
							break;
						if (map[nr][nc] != map[r][c])
							break;
						num++;
						cnt++;
					}
					if (num == 5) {
						int nr = r + dr[k] * -1;
						int nc = c + dc[k] * -1;

						if (check(nr, nc)) {
							System.out.println(map[r][c]);
							System.out.printf("%d %d\n", r, c);
							flag = true;
						} else {
							if (map[nr][nc] != map[r][c]) {
								System.out.println(map[r][c]);
								System.out.printf("%d %d\n", r, c);
								flag = true;
							}
						}

					}

				}

			}

		}

		if (!flag) {
			System.out.println(0);
		}

	}

	private static boolean check(int nr, int nc) {
		if (nr < 0 || nc < 0 || nr >= 20 || nc >= 20)
			return true;
		return false;
	}
}

 

※ 옛날에 400줄을 넘게 코딩해서 통과했던 코드인데 다시 풀어서 짧게 코딩함.

해당방향으로 최대한내려가서 5일때 왔던 방향의 반대로 다시 가는 코드가 있어야 하는데 안해서 여러번 틀림... 

쉬운 구현문제도 자주 풀어봐야할듯

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/02   »
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
글 보관함