본문 바로가기

IM대비

백준 2578 <빙고>

728x90

간단한 시뮬레이션 문제이다. 

 

문제의 해결방법

  1. 철수의 게임판에서 사회자가 부른 수를 찾아 visit처리를 한다.
  2. 철수의 판에 빙고가 몇 개 완성되었는지 확인한다.
  3. 3이 넘으면 출력한다.

 

철수의 게임판에서 사회자가 부른 수를 찾기위해 사회자가 부른 수와 몇 번 불렀는지 정보를 넘겨준다.

 

find 함수 안에서 철수의 판에서 호출한 번호를 visit 처리를 한다.

 

가로 세로 검사를 하는 소스이다.

대각선을 검사하는 소스이다.

 

전체 코드

 

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

public class Main{

	static int map[][], num[][], result = -1;
	static boolean visit[][];

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		map = new int[5][5];
		num = new int[5][5];
		visit=new boolean[5][5];
		for (int i = 0; i < 5; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			for (int j = 0; j < 5; j++) {
				map[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		for (int i = 0; i < 5; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			for (int j = 0; j < 5; j++) {
				num[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		re: for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				find(num[i][j],i*5+j+1);
				if (result != -1) {
					break re;
				}
			}
		}
		System.out.println(result);

	}

	private static void find(int k,int now) {
		// TODO Auto-generated method stub
		re:for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				if(map[i][j]==k) {
					visit[i][j]=true;
					break re;
				}
			}
		}
		int count=0;
		for (int i = 0; i < 5; i++) {
			int check=0;
			for (int j = 0; j < 5; j++) {
				if(visit[i][j])
					check++;
			}
			if(check==5) {
				count++;
			}
		}
		for (int i = 0; i < 5; i++) {
			int check=0;
			for (int j = 0; j < 5; j++) {
				if(visit[j][i])
					check++;
			}
			if(check==5) {
				count++;
			}
		}
		int check=0;
		for(int i=0;i<5;i++) {
			if(visit[i][i])
				check++;
			if(check==5) {
				count++;
			}
		}
		check=0;
		for(int i=4;i>=0;i--) {
			if(visit[i][4-i])
				check++;
			if(check==5) {
				count++;
			}
		}
		if(count>=3) {
			result=now;
		}
	}
}

'IM대비' 카테고리의 다른 글

백준 2477 <참외밭>  (0) 2020.09.19
백준 2491 <수열>  (0) 2020.09.19
백준 2563 <색종이>  (0) 2020.09.19
백준 2605 <줄 세우기>  (0) 2020.09.19
백준 2309 <일곱 난쟁이>  (0) 2020.09.19