본문 바로가기
모각코/2021_summer_모각코

2021_summer_모각코] LIE 또! 팀 - 6차시 결과

by 호상 🐧 2021. 8. 11.

 

https://www.acmicpc.net/problem/16173

 

16173번: 점프왕 쩰리 (Small)

쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로,  (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다.

www.acmicpc.net

package baekjoon_16173_bfs;

import java.io.*;
import java.util.*;

class point {
	int col;
	int row;

	public point(int col, int row) {
		this.col = col;
		this.row = row;
	}
}

public class Main {
	static int[][] map;
	static boolean[][] visit;
	static LinkedList<point> que = new LinkedList<>();
	static int size;

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		size = Integer.parseInt(br.readLine());

		map = new int[size][size];
		visit = new boolean[size][size];

		for (int row = 0; row < size; row++) {
			String[] point = br.readLine().split(" ");
			for (int col = 0; col < size; col++) {
				map[row][col] = Integer.parseInt(point[col]);
			}
		}

		visit[0][0] = false;
		que.add(new point(0, 0));
		bfs();

	}

	private static void bfs() {
		int check = 0;
		while (!que.isEmpty()) {
			point point = que.poll();

			int x = point.col;
			int y = point.row;

			int jump = map[x][y];

			if (map[x][y] == -1) {
				check = 1;
				System.out.println("HaruHaru");
				break;
			}
			if (x + jump < size && !visit[x][y]) {
				que.add(new point(x + jump, y));
			}
			if (y + jump < size && !visit[x][y]) {
				que.add(new point(x, y + jump));
			}

			visit[x][y] = true;
		}
		if (que.isEmpty() && check != 1) {
			System.out.println("Hing");
		}
	}
}

 

bfs 문제 풀이

 

그리 어려운 문제는 아니었다. bfs를 사용하는 문제였는데 아직 익숙하지 않아 적지않은 시간을 소요하였다. 

다만 dfs 문제는 시간내에 풀지 못하였다. 문제 난이도가 올라가니 감이 잡히지 않는다. 이후에 도전 하여 풀어야겠다고 생각한다. 

 

//bfs 백준 문제 풀이 개념학습

댓글