일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 자바
- Spotify Api
- SWEA
- 회귀
- SW Expert Academy
- 스포티파이
- linux
- SECS-II
- c
- modern c++
- spring boot
- Computer Science
- C++
- SECS/GEM
- Gem
- 백준
- spotify
- 프로그래머스
- python
- programmers
- SECS
- 파이썬
- MYSQL
- Spring JPA
- Spring
- 회원가입
- Baekjoon
- regression
- CS
- java
- Today
- Total
비버놀로지
[BAEKJOON 백준] 2578 빙고 본문
문제
빙고 게임은 다음과 같은 방식으로 이루어진다.
먼저 아래와 같이 25개의 칸으로 이루어진 빙고판에 1부터 25까지 자연수를 한 칸에 하나씩 쓴다
다음은 사회자가 부르는 수를 차례로 지워나간다. 예를 들어 5, 10, 7이 불렸다면 이 세 수를 지운 뒤 빙고판의 모습은 다음과 같다.
차례로 수를 지워가다가 같은 가로줄, 세로줄 또는 대각선 위에 있는 5개의 모든 수가 지워지는 경우 그 줄에 선을 긋는다.
이러한 선이 세 개 이상 그어지는 순간 "빙고"라고 외치는데, 가장 먼저 외치는 사람이 게임의 승자가 된다.
철수는 친구들과 빙고 게임을 하고 있다. 철수가 빙고판에 쓴 수들과 사회자가 부르는 수의 순서가 주어질 때, 사회자가 몇 번째 수를 부른 후 철수가 "빙고"를 외치게 되는지를 출력하는 프로그램을 작성하시오.
입력
첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 빙고판에 쓰여진 수와 사회자가 부르는 수는 각각 1부터 25까지의 수가 한 번씩 사용된다.
출력
첫째 줄에 사회자가 몇 번째 수를 부른 후 철수가 "빙고"를 외치게 되는지 출력한다.
먼저 입력으로 들어오는 다섯줄로 배열을 만들어 준다.
그리고 사회자가 숫자를 하나씩 불러줄때마다 해당하는 숫자를 0으로 만들어 줍니다.
그리고 0이 되는 첫째줄이 있다면 빙고가 있는지 확인을 해줘야 한다.
그렇게 빙고가 세줄이 생겼다면 그때의 for 안에 i값을 출력해 준다면 사회자가 몇번째에 불렀는지 알수있게 된다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = 5;
int arr[][] = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
arr[i][j] = sc.nextInt();
}
}
for (int i = 0; i < n * n; i++) {
int cnt=0;
int temp = sc.nextInt();
for (int j = 0; j < n; j++) {
for (int j2 = 0; j2 < n; j2++) {
if(arr[j][j2]==temp) {
arr[j][j2]=0;
}
}
}
for (int j = 0; j < n; j++) {
if(arr[j][0]==0) {
int sum=0;
for (int j2 = 0; j2 < n; j2++) {
sum+=arr[j][j2];
}
if(sum==0) {
cnt++;
}
}
if(arr[0][j]==0) {
int sum=0;
for (int j2 = 0; j2 < n; j2++) {
sum+=arr[j2][j];
}
if(sum==0) {
cnt++;
}
}
}
if(arr[0][0]==0) {
int sum=0;
for (int j2 = 0; j2 < n; j2++) {
sum+=arr[j2][j2];
}
if(sum==0) {
cnt++;
}
}
if(arr[n-1][0]==0) {
int sum=0;
for (int j2 = 0; j2 < n; j2++) {
sum+=arr[n-j2-1][j2];
}
if(sum==0) {
cnt++;
}
}
if(cnt>=3) {
System.out.println(i+1);
break;
}
}
}
}
'ALGORITM > JAVA' 카테고리의 다른 글
[BAEKJOON 백준] 2606 바이러스 (0) | 2021.01.24 |
---|---|
[BAEKJOON 백준] 2605 줄 세우기 (0) | 2021.01.24 |
[BAEKJOON 백준] 2564 경비원 (0) | 2021.01.24 |
[BAEKJOON 백준] 2563 색종이 (0) | 2021.01.18 |
[BAEKJOON 백준] 2558 A+B-2 (0) | 2021.01.15 |