๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿž Daily Loaf/์•Œ๊ณ ๋ฆฌ์ฆ˜

[๋ธŒ๋ก ์ฆˆ2][Swift]๋ฐฑ์ค€3052๋ฒˆ(Set)

by BreadDev 2024. 10. 7.
728x90

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

 

๋‹ต์•ˆ์ฝ”๋“œ

var remainders = Set<Int>()

for _ in 1...10 {
    if let input = readLine(), let number = Int(input) {
        remainders.insert(number % 42)
    }
}

print(remainders.count)
  • var remainders = Set<Int>():
    • ์ •์ˆ˜ํ˜• Set์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Set์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ปฌ๋ ‰์…˜ ํƒ€์ž…์ž…๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ค‘๋ณต๋œ ๋‚˜๋จธ์ง€๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • for _ in 1...10 {:
    • 10๋ฒˆ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฃจํ”„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. 10๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
  • if let input = readLine(), let number = Int(input) {:
    • readLine()์œผ๋กœ ํ•œ ์ค„์„ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.
    • Int(input)์œผ๋กœ ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ต์…”๋„ ๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ์ด ์œ ํšจํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • remainders.insert(number % 42):
    • ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž๋ฅผ 42๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
    • ๊ณ„์‚ฐ๋œ ๋‚˜๋จธ์ง€๋ฅผ Set์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
    • ๋งŒ์•ฝ ์ด๋ฏธ ๊ฐ™์€ ๋‚˜๋จธ์ง€๊ฐ€ Set์— ์žˆ๋‹ค๋ฉด, ์ค‘๋ณต์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • print(remainders.count):
    • Set์˜ ์›์†Œ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋Š” ๊ณง ์„œ๋กœ ๋‹ค๋ฅธ ๋‚˜๋จธ์ง€์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋Š” Set์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต์„ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ฐ ์ž…๋ ฅ ์ˆซ์ž์˜ ๋‚˜๋จธ์ง€๋ฅผ Set์— ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ, ์ค‘๋ณต๋œ ๋‚˜๋จธ์ง€๋Š” ์ž๋™์œผ๋กœ ๋ฌด์‹œ๋˜๊ณ  ์œ ์ผํ•œ ๋‚˜๋จธ์ง€๋งŒ ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ Set์˜ ํฌ๊ธฐ๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ๋‚˜๋จธ์ง€์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค