Queens That Can Attack the King

Sett·2021년 7월 26일
1

문제

https://leetcode.com/problems/queens-that-can-attack-the-king/

문제 접근

  1. 처음엔 아래와 같이 지성있는 탐색을 하고 싶었으나,
  2. 그런거 모르겠고 그냥 상하좌우,대각선 8방향 탐색해서 풀었음.
  3. 솔직히 틀릴 줄 알았는 데, 한방에 맞았음..
  4. 알고리즘이라 하기도 창피하다... 그냥 2차원 배열 열심히 탐색함 ㅎㅎ..

소스코드

class Solution {
    func queensAttacktheKing(_ queens: [[Int]], _ king: [Int]) -> [[Int]] {
        var temp: [[Int]] = []
        var flag: [Int] = [0,0,0,0,0,0,0,0]
        for j in 1..<9 {
            for i in 0..<queens.count {
                if king[0] + j == queens[i][0] && king[1] == queens[i][1] {
                    if flag[0] == 0 {
                        temp.append(queens[i])
                        flag[0] = 1
                    }
                }
                if king[0] - j == queens[i][0] && king[1] == queens[i][1] {
                    if flag[1] == 0 {
                        temp.append(queens[i])
                        flag[1] = 1
                    }
                }
                if king[1] + j == queens[i][1] && king[0] == queens[i][0] {
                    if flag[2] == 0 {
                        temp.append(queens[i])
                        flag[2] = 1
                    }
                }
                if king[1] - j == queens[i][1] && king[0] == queens[i][0] {
                    if flag[3] == 0 {
                        temp.append(queens[i])
                        flag[3] = 1
                    }
                }
            }
        }
        
        for j in 1..<9 {
            for i in 0..<queens.count {
                if king[0] + j == queens[i][0] && king[1] + j == queens[i][1] {
                    if flag[4] == 0 {
                        temp.append(queens[i])
                        flag[4] = 1
                    }
                }
                if king[0] - j == queens[i][0] && king[1] + j == queens[i][1] {
                    if flag[5] == 0 {
                        temp.append(queens[i])
                        flag[5] = 1
                    }
                }
                if king[0] + j == queens[i][0] && king[1] - j == queens[i][1] {
                    if flag[6] == 0 {
                        temp.append(queens[i])
                        flag[6] = 1
                    }
                }
                if king[0] - j == queens[i][0] && king[1] - j == queens[i][1] {
                    if flag[7] == 0 {
                        temp.append(queens[i])
                        flag[7] = 1
                    }
                }
            }
        }
        return temp
    }
}
profile
안녕하세요

0개의 댓글

관련 채용 정보