๋ฐฑ์ค€ - ๋นŒ๋Ÿฐํ˜ธ์„(Swift)

2022. 11. 15. 16:44ใ†Algorithm

๋ฐฑ์ค€ - ๋นŒ๋Ÿฐํ˜ธ์„(Swift)

 

 

 ๋ฌธ์ œ ์„ค๋ช…

 

https://www.acmicpc.net/problem/22251

 

22251๋ฒˆ: ๋นŒ๋Ÿฐ ํ˜ธ์„

LED๋ฅผ 2๊ฐœ๊นŒ์ง€ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์„ ๋•Œ, 5์ธต์—์„œ 3์ธต, 6์ธต, 8์ธต, ๊ทธ๋ฆฌ๊ณ  9์ธต์œผ๋กœ ๋ฐ”๊ฟ”๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค.

www.acmicpc.net

 

 ๋‚˜์˜ ํ’€์ด

 

๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์–ด๋–ป๊ฒŒ ํ’€์–ด์•ผํ• ์ง€ ๊ฐ์ด ์ž˜ ์•ˆ์™”๋‹ค.

๋”ฑ ๋ฌธ์ œ๋งŒ ์ดํ•ดํ•œ ๋Š๋‚Œ.. 

๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ณด๋ฉด์„œ ๊ฐ์„ ์ฐพ์•˜๋‹ค.

 

๋จผ์ € K๊ฐ€ 6๊นŒ์ง€๊ธฐ ๋•Œ๋ฌธ์— N์ด ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋Š” 999,999๊นŒ์ง€์ด๋‹ค. ์ฆ‰ NlogN๊นŒ์ง€๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ฃผ์–ด์ง„ ์ˆซ์ž์—์„œ ํŠน์ • ์ธต์ˆ˜๋ฅผ ๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•ด์•ผํ•˜๊ธฐ ๋–„๋ฌธ์— 1์ธต๋ถ€ํ„ฐ N์ธต๊นŒ์ง€ ๋จผ์ € ์ „๋ถ€ ํƒ์ƒ‰์„ํ•œ๋‹ค.

์ดํ›„ ์ผ์˜์ž๋ฆฌ๋ถ€ํ„ฐ K์ž๋ฆฌ๊นŒ์ง€ ๋น„๊ต๋ฅผ ํ•˜๋Š”๋ฐ ๊ทธ ์•ˆ์—์„œ ๋˜ LED๊ฐ€ ๊ฐ™์€์ง€ ๋‹ค๋ฅธ์ง€๋ฅผ ํŒ๋ณ„์„ ํ•ด์„œ ๋‹ค๋ฅด๋‹ค๋ฉด cnt๋ฅผ ์˜ฌ๋ ค์ค€๋‹ค.

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ํŠน์ • ์ˆซ์ž๊ฐ€ ํŠน์ • ์ธต์ˆ˜๊ฐ€ ๋˜๊ธฐ์œ„ํ•ด ๋ณ€ํ™˜๋˜์–ด์•ผ ํ•  LED์ˆซ์ž๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ๋˜๊ณ  ์ด๊ฒŒ P๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

๋‚˜๋จธ์ง€์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด์„œ ์ผ์˜์ž๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ๊ณผ ๋‚˜๋ˆ„๊ธฐ๋ฅผ ํ†ตํ•ด์„œ ์‹ญ์˜์ž๋ฆฌ ๋ฐฑ์˜์ž๋ฆฌ๋˜ํ•œ ๊ตฌํ•˜๋Š” ๊ฑธ ๋ฐฐ์› ๋‹ค.

 

 

import Foundation

let ch: [[Bool]] = [
    [true, true, true, false, true, true, true], //0
    [false, false, true, false, false, false, true], //1
    [false, true, true, true, true, true, false], //2
    [false, true, true, true, false, true, true], //3
    [true, false, true, true, false, false, true], //4
    [true, true, false, true, false, true, true], //5
    [true, true, false, true, true, true, true], //6
    [false, true, true, false, false, false, true], //7
    [true, true, true, true, true, true, true, true], //8
    [true, true, true, true, false, true, true] //9
]

let input = readLine()!.components(separatedBy:" ").map{Int($0)!}
let N = input[0], K = input[1], P = input[2], X = input[3]
var result = 0
for i in 1..<N+1 {
    if i==X { // ๊ฐ™์€ ์ˆซ์ž๋ผ๋ฉด ๋„˜์–ด๊ฐ„๋‹ค.
        continue
    }
    var cnt = 0 // ๋ฐ”๋€ LED์˜ ์ˆซ์ž
    var from = X, to = i
    for k in 0..<K { // ์ž๋ฆฟ์ˆ˜๋งŒํผ ์ง„ํ–‰. K๊ฐ€ 3์ด๋ผ๋ฉด 999๊ฐ€ ์ตœ๋Œ€๊ฐ’์ด๋‹ˆ 3๋ฒˆ ์ง„ํ–‰
        for j in 0..<7 { // ์ˆซ์ž ํ•˜๋‚˜๋‹น ๋””์Šคํ”Œ๋ ˆ์ด ๊ฐœ์ˆ˜
            if ch[from%10][j] != ch[to%10][j] { cnt += 1 } //LED๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ์ „ํ™˜
        }
        from /= 10 
        to /= 10
    }
    if cnt <= P { // ๋ฐ”๋€ LED์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ตœ๋Œ€๊ฐ’๋ณด๋‹ค ์ž‘๋‹ค๋ฉด
        result += 1
    }
}
print(result)