다희의 코딩 성장일기
[백준] 2578. 빙고 (자바 JAVA) 본문
[ 문제 ] [백준] 2578. 빙고 (자바 JAVA)
문제 링크 : https://www.acmicpc.net/problem/2578
# 접근 방법 및 풀이
- 구현 문제다. 실버 5인데 실버5 보다는 실버3같은? 문제다.
- 5X5 map 크기에 입력을 받아 숫자를 담고, 사회자가 부르는 숫자대로 빙고를 체크해야한다.
- 사회자가 부르는 번호가 map의 어디 좌표 (i, j)에 있는지 알기 위해 HashMap을 이용해서 담았다. key는 번호고, value는 Point로 i,j를 담는다.
- 5X5 크기의 visit배열을 생성해 사회자가 부르는 번호의 i, j에 true 체크를 해준다.
- 문제에서 3줄 이상되어야 빙고를 외칠 수 있으므로, 사회자가 10번 이상 번호를 불렀을 경우 check()메소드로 빙고인지 체크해준다.
- 자세한건 코드참조
# 주의할 점
- 딱히 없음
JAVA 코드
package Silver;
import java.awt.Point;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
public class bj2578_빙고 {
static int map[][];
static boolean visit[][];
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
map = new int[5][5];
visit = new boolean[5][5];
HashMap<Integer, Point> hash = new HashMap<Integer, Point>();
for (int i = 0; i < 5; i++) {
StringTokenizer st = new StringTokenizer(in.readLine());
for (int j = 0; j < 5; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
hash.put(map[i][j],new Point(i, j));
}
}
int cnt = 0;
int ans = 0;
boolean flag = false;
for (int i = 0; i < 5; i++) {
StringTokenizer st = new StringTokenizer(in.readLine());
for (int j = 0; j < 5; j++) {
cnt++;
int num = Integer.parseInt(st.nextToken());
Point p = hash.get(num);
visit[p.x][p.y] = true;
if(!flag && cnt >= 10) {
flag = check();
ans = cnt;
}
}
}
System.out.println(ans);
}
private static boolean check() {
int cnt = 0;
for (int i = 0; i < 5; i++) {
int w = 0;
int l = 0;
for (int j = 0; j < 5; j++) {
if(visit[i][j])
w++;
if(visit[j][i])
l++;
}
if(w == 5)
cnt++;
if(l == 5)
cnt++;
}
if(visit[0][0] && visit[1][1] && visit[2][2] && visit[3][3] && visit[4][4])
cnt++;
if(visit[0][4] && visit[1][3] && visit[2][2] && visit[3][1] && visit[4][0])
cnt++;
if(cnt >= 3)
return true;
return false;
}
}
REVIEW
'Algorithm > 백준 BOJ' 카테고리의 다른 글
[백준] 12851_숨바꼭질2 (자바 JAVA) (0) | 2021.12.19 |
---|---|
[백준] 9177. 단어 섞기 (자바 JAVA) (0) | 2021.12.16 |
[백준] 2608. 로마 숫자 (자바 JAVA) (0) | 2021.09.29 |
[백준] 1967. 트리의 지름 (자바 JAVA) (0) | 2021.09.27 |
[백준] 2800. 괄호 제거 (자바 JAVA) (0) | 2021.09.26 |
Comments