Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
관리 메뉴

leeyang의 개발 성장기

[백준] 1018번 체스판 다시 칠하기 본문

알고리즘

[백준] 1018번 체스판 다시 칠하기

leeyang 2022. 2. 13. 19:00

브루트포스란게 무엇인지 까먹어서....  백준의 유형별에서 브루트 포스를 검색해보았다

브루트포스란? 가능한 모든 경우에 대해 모두 직접 해 보는 방법 입니다.

결국.. 다 해보기? 이니까 오히려 빠르게 감을 잡기 쉽다 생각하였다.

하지만 ㅠㅠ 처음에 체스판을 쪼갠다는걸 잘 못 이해해서

올바른 결과값을 만든 후 비교를 했었다가. 결국 전체에서 뺴는걸로 하였다.

줄과 열의 합이 짝수이면 B, 아니면 W인걸 이용하여 비교한다.

 

 let input = readLine()!.split(separator: " ").map(){Int($0)}

 let array1: Int = (input.first ?? 8) ?? 8
 let array2: Int = (input.last ?? 8) ?? 8

 var result: [Int] = []

 for i in 0..<array1-7 {
     for j in 0..<array2-7 {
         var bTotal = 0
         var wTotal = 0
         for k in i..<i+8 {
             for h in j..<j+8 {
                 if (k+h) % 2 == 0 {
                     if inputList[k][h] != "B" {
                         bTotal += 1
                     }
                     if inputList[k][h] != "W" {
                         wTotal += 1
                     }
                 }
                 else {
                     if inputList[k][h] != "B" {
                         wTotal += 1
                     }
                     if inputList[k][h] != "W" {
                         bTotal += 1
                     }
                 }
             }
         }
         result.append(wTotal)
         result.append(bTotal)
     }
 }

 result.sort(by: <)
 print(result.first ?? 0)

 


참고 블로그

https://minhaaan.github.io/boj/1018_swift/

Comments