MUKER_DEV with iOS

[swift] ๋ฐฑ์ค€- 2503๋ฒˆ: ์ˆซ์ž ์•ผ๊ตฌ ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/BAEKJOON

[swift] ๋ฐฑ์ค€- 2503๋ฒˆ: ์ˆซ์ž ์•ผ๊ตฌ

MUKER 2023. 7. 5. 10:29
 

2503๋ฒˆ: ์ˆซ์ž ์•ผ๊ตฌ

์ฒซ์งธ ์ค„์—๋Š” ๋ฏผํ˜์ด๊ฐ€ ์˜์ˆ˜์—๊ฒŒ ๋ช‡ ๋ฒˆ์ด๋‚˜ ์งˆ๋ฌธ์„ ํ–ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. ์ด์–ด์ง€๋Š” N๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ ์ค„๋งˆ๋‹ค ๋ฏผํ˜์ด๊ฐ€ ์งˆ๋ฌธํ•œ ์„ธ ์ž๋ฆฌ ์ˆ˜์™€ ์˜์ˆ˜๊ฐ€ ๋‹ตํ•œ ์ŠคํŠธ

www.acmicpc.net


์„ฑ๊ณต ํ’€์ด

var arr = (1...9).map { String($0) }
let length = 3
var used = Array(repeating: false, count: arr.count)
var result = [[Character]]()

func backTracking(_ s: String) {
    if s.count == length {
        result.append(s.map { $0 })
        return
    }
    for i in 0..<arr.count {
        if !used[i] {
            used[i] = true
            backTracking(s+arr[i])
            used[i] = false
        }
    }
}
backTracking("")

for _ in 0..<Int(readLine()!)! {
    let q = readLine()!.split { $0 == " "}.map { Int($0)! }
    let num = Array(String(q[0]))
    
    result = result.filter {
        var SB = (0,0)
        
        for i in 0..<3 {
            if $0[i] == num[i] { SB.0 += 1 }
            else if num.contains($0[i]) { SB.1 += 1 }
        }
        
        return SB == (q[1],q[2])
    }
    
}
print(result.count)

ํ’€์ด ํ‚ค์›Œ๋“œ

- ๋ฐฑํŠธ๋ž˜ํ‚น์œผ๋กœ 123~987์˜ ์ˆซ์ž ์ค‘ ๊ฐ ์ž๋ฆฟ์ˆ˜์˜ ๊ฒน์น˜๋Š” ์ˆซ์ž๊ฐ€ ์—†๋Š” ์ˆซ์ž๋ฅผ ๋ฝ‘์•„ result ๋ฐฐ์—ด์— ์‚ฝ์ž…

- ๋น„๊ตํ•ด์•ผํ•  ์ˆซ์ž๊ฐ€ ๋“ค์–ด ์˜ฌ ๋•Œ๋งˆ๋‹ค result ๋ฐฐ์—ด์„ filter๋กœ ์ˆœํšŒํ•œ๋‹ค.
- ์ˆœํšŒํ•˜๋Š” ์ˆซ์ž์™€ ์ฃผ์–ด์ง„ ์ˆซ์ž๋ฅผ ๋น„๊ตํ•ด ์ŠคํŠธ๋ผ์ดํฌ์™€ ๋ณผ์ด ๊ฐ™๋‹ค๋ฉด filter์—์„œ true๋กœ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.
- filter๋กœ ๊ฑธ๋Ÿฌ์ง„ ๋ฐฐ์—ด์€ ๋‹ค์‹œ result ํ• ๋‹นํ•œ๋‹ค.