[백준] 2578번: 빙고 - Kotlin[코틀린]

2023. 12. 27. 23:23·알고리즘/Baekjoon

문제

 

 

2578번: 빙고

첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로

www.acmicpc.net

 


풀이

 

 사회자가 부른 숫자를 하나씩 입력 받을 때마다 빙고 확인을 수행한다. 빙고 확인은 가로, 세로, 대각선을 모두 고려해야 하고,  for문을 이용해 세어주면 된다.

 


코드

 

fun main() {
    val br = System.`in`.bufferedReader()
    val bw = System.out.bufferedWriter()

    val map = Array(5) { br.readLine().split(' ').map { it.toInt() } }
    val visited = Array(5) { BooleanArray(5) } // 빙고 체크

    fun bingo(): Boolean {
        var cnt = 0
        var cross1 = 0
        var cross2 = 0

        for(i in 0 until 5) {
            var row = 0
            var col = 0
            for(j in 0 until 5) {
                if(visited[i][j]) row++
                if(visited[j][i]) col++
                if(i==j && visited[i][j]) cross1++
                if(i+j==4 && visited[i][j]) cross2++
            }
            if(row == 5) cnt++
            if(col == 5) cnt++
        }

        if(cross1 == 5) cnt++
        if(cross2 == 5) cnt++

        return cnt>=3
    }

    var ans = 1

    for(i in 0 until 5) {
        val st = StringTokenizer(br.readLine())
        for(j in 0 until 5) {
            val num = st.nextToken().toInt()
            for(k in 0 until 5) {
                for(l in 0 until 5) {
                    if(map[k][l] == num) {
                        visited[k][l] = true
                    }
                }
            }
            if(!bingo()) ans++
        }
    }

    bw.write("$ans")
    bw.flush()
    bw.close()
    br.close()
}

 

 

'알고리즘 > Baekjoon' 카테고리의 다른 글

[백준] 1138번: 한 줄로 서기 - Kotlin[코틀린]  (0) 2024.01.01
[백준] 10826번: 피보나치 수 4 - Kotlin[코틀린]  (1) 2023.12.28
[백준] 1743번: 음식물 피하기 - Kotlin[코틀린]  (0) 2023.12.21
[백준] 1965번: 상자넣기 - Kotlin[코틀린]  (0) 2023.12.20
[백준] 10451번: 순열 사이클 - Kotlin[코틀린]  (0) 2023.12.19
'알고리즘/Baekjoon' 카테고리의 다른 글
  • [백준] 1138번: 한 줄로 서기 - Kotlin[코틀린]
  • [백준] 10826번: 피보나치 수 4 - Kotlin[코틀린]
  • [백준] 1743번: 음식물 피하기 - Kotlin[코틀린]
  • [백준] 1965번: 상자넣기 - Kotlin[코틀린]
junghoooooon
junghoooooon
  • junghoooooon
    코드팁스
    junghoooooon
  • 전체
    오늘
    어제
    • 전체 (120)
      • 안드로이드 (0)
        • 코드팁스 (0)
      • 유니티 (0)
        • 코드팁스 (0)
      • 알고리즘 (118)
        • 알고리즘 (0)
        • Baekjoon (118)
      • GitHub (0)
      • 티스토리 (2)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      dfs
      유니온파인드
      누적 합
      에라토스테네스의 체
      티스토리
      분리집합
      그래프 탐색
      그래프이론
      문자열
      이분 탐색
      DP
      그리디
      MST
      크루스칼
      스택
      재귀
      수학
      프림
      피보나치
      정렬
      분할 정복
      백트래킹
      BFS
      투 포인터
      모듈러 곱셈 역원
      구현
      큐
      소수 판정
      브루트포스
      우선순위 큐
    • hELLO· Designed By정상우.v4.10.2
    junghoooooon
    [백준] 2578번: 빙고 - Kotlin[코틀린]
    상단으로

    티스토리툴바