Bibi's DevLog ๐ค๐
[๋ฐฑ์ค 1834] ๋๋จธ์ง์ ๋ชซ์ด ๊ฐ์ ์ ๋ณธ๋ฌธ
ํ๋ก๊ทธ๋๋ฐ/์๊ณ ๋ฆฌ์ฆ ํ์ด Swift
[๋ฐฑ์ค 1834] ๋๋จธ์ง์ ๋ชซ์ด ๊ฐ์ ์
๋น๋น bibi 2022. 8. 31. 12:321834๋ฒ: ๋๋จธ์ง์ ๋ชซ์ด ๊ฐ์ ์
N์ด ์ ๋ ฅ๋์์ ๋, ๋๋จธ์ง์ ๋ชซ์ด ๊ฐ์ ์๋ฅผ ๋ชจ๋ ๊ตฌํ๋ ๋ฌธ์ .
- 3์ด ์
๋ ฅ๋๋ฉด
- 1 / 3 : ๋ชซ 0, ๋๋จธ์ง 1
- 2 / 3 : ๋ชซ 0, ๋๋จธ์ง 2
- 3 / 3 : ๋ชซ 1, ๋๋จธ์ง 0
- 4 / 3 : ๋ชซ 1, ๋๋จธ์ง 1 (โ๏ธ)
- 5 / 3 : ๋ชซ 1, ๋๋จธ์ง 2
- 6 / 3 : ๋ชซ 2, ๋๋จธ์ง 0
- 7 / 3 : ๋ชซ 2, ๋๋จธ์ง 1
- 8 / 3 : ๋ชซ 2, ๋๋จธ์ง 2 (โ๏ธ)
- 9 / 3 : ๋ชซ 3, ๋๋จธ์ง 1
- ๋๋จธ์ง์ ๋ชซ์ด ๊ฐ์ ์๋ 4, 8 ์ด๋ฉฐ, ๋ต์ ์ด ์๋ค์ ํฉํ 12์ด๋ค.
- ๐ค ๋์ ์์ฐ์์ ์ ํ๋ ์๋๋ฐ ๋ต์ด ๋์ฌ๋๊น์ง ๋ฌด์กฐ๊ฑด ๋๋ ์ผ ํ๋?
- ์๋๋ค. ์ ์์ ์ ํจํด์ ๋ณด๋ฉด โ๋๋จธ์ง๋ ํญ์ 0 ๋ถํฐ N-1๊น์ง"์ ๊ฐ์ ๊ฐ์ง๋ค.
- ๋, ๋๋จธ์ง == ๋ชซ ์ด์ด์ผ ํ๋๋ฐ ๋๋จธ์ง์ ์ต๋๊ฐ์ด N-1์ด๊ธฐ ๋๋ฌธ์, ๋ชซ == N ์ด ๋๋ ์์ ๋ถํฐ๋ ๊ตฌํ ํ์๊ฐ ์์ด์ง๋ค (๊ทธ ์ดํ๋ถํฐ๋ ๋ชซ๋ง ์ ์ ์ปค์ ธ ๋๋จธ์ง==๋ชซ์ด ๋ ์๊ฐ ์์ผ๋ฏ๋ก).
- ์ฌ๊ธฐ๊น์ง ๊ฒฐ๋ก ์ ๋ด๊ณ ํ์ด ๋ณด์๋ค ( ํ์ด1 )
ํ์ด 1
// ์๊ฐ์ด๊ณผ
let n = Int(readLine()!)!
var number = 1
var answers: [Int] = []
while true {
let ๋๋จธ์ง = number % n // ๋๋จธ์ง๋ 0 ~ n-1
let ๋ชซ = number / n // ๋ชซ์ ๊ณ์ ์ปค์ง๊ธฐ๋ง ํจ
if ๋๋จธ์ง == ๋ชซ {
answers.append(number)
}
number += 1
if ๋ชซ == n { // ๋ชซ์ด n๊ณผ ๊ฐ์์ง๋ฉด ๊ทธ ์ดํ๋ ๋ณผ ํ์ X
break
}
}
print(answers.reduce(0) { $0 + $1 })
- ์๊ฐ์ด๊ณผ๊ฐ ๋ด๋ค.
- ๐ค ์ฌ๊ธฐ์ ์๊ฐ์ ์ด๋ป๊ฒ ๋ ์ค์ด์ง?
- 1๋ถํฐ ๋ชซ์ด n๊ณผ ๊ฐ์์ง๋ ์์ฐ์๊น์ง ๋ชจ๋ ์ฐพ์๋ณด๊ธฐ ๋๋ฌธ์ ์ค๋ ๊ฑธ๋ฆผ = O(n)๊ผด๋ก ๋น๊ต
- ์๊ฐํด ๋ณด๋ N์ ์ต๋๊ฐ์ด 2,000,000์ด๋ผ๊ณ ํ๊ธฐ ๋๋ฌธ์ ์ต๋๊ฐ์ด ๋ค์ด์ค๋ฉด ๋ช๋ฐฑ๋ง๊ฐ์ ์๋ฅผ ์ผ์ผ์ด ๋น๊ตํ๊ฒ ๋๋ค
- ์ฐ๋ฆฌ๊ฐ ํ์ํ ๊ฒ์ โ๋ชซ๊ณผ ๋๋จธ์ง๊ฐ ๊ฐ์' ์ ๋ฟ์ด๊ณ , ์กฐ๊ฑด๋ ์์ฐ์๋ก ํ์ ๋์ด ์์ผ๋ฏ๋ก ์ฒ์๋ถํฐ ๋ชซ๊ณผ ๋๋จธ์ง์ ๊ฐ์ ์๋ง ๊ตฌํ์. ( ํ์ด2 )
ํ์ด2
// ๋ฉ๋ชจ๋ฆฌ์ด๊ณผ
let n = Int(readLine()!)!
var ๋ชซ๊ณผ๋๋จธ์ง = 1
var answers: [Int] = []
while true {
let number = n * ๋ชซ๊ณผ๋๋จธ์ง + ๋ชซ๊ณผ๋๋จธ์ง
print(number)
answers.append(number)
๋ชซ๊ณผ๋๋จธ์ง += 1
if ๋ชซ๊ณผ๋๋จธ์ง == n {
break
}
}
print(answers.reduce(0) { $0 + $1 })
- ๋ชซ๊ณผ ๋๋จธ์ง๊ฐ ๊ฐ์ ์ = N * 1 + 1, N * 2 + 2, N * 3 + 3 โฆ ์ ๊ผด์ด๋ค
- ๋ฐ๋ผ์ ๋ชซ๊ณผ๋๋จธ์ง๋ฅผ 1์ฉ ์ฆ๊ฐ์ํค๋ฉฐ ์ ๊ณต์์ ๋ฐ๋ผ โ๋ชซ๊ณผ ๋๋จธ์ง๊ฐ ๊ฐ์ ์'๋ฅผ ๊ตฌํ๋ค
- ๐ค ์ด๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ด๊ณผ๊ฐ ๋ด๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ด๊ณผ๋ ๋ํ์ ์ผ๋ก ๋ฐฐ์ด์ ๋๋ฌด ๊ธธ๊ฒ ์ฌ์ฉํ ๋ ๋ฌ๋ค๊ณ ํ๋ค
- ์๊ฐํด ๋ณด๋ answer๋ฅผ ๊ตฌํ๋ ๋ฐ ๋ฐฐ์ด์ ๋ฃ๊ณ ๊ทธ๊ฒ์ ํฉํ ํ์๊ฐ ์์ด, ๊ทธ๋ฅ ์ซ์๋ก ๋ณ๊ฒฝํ๋ค
ํ์ด3
// ๋ฐํ์์๋ฌ
let n = Int(readLine()!)!
var ๋ชซ๊ณผ๋๋จธ์ง = 1
var answer = 0
while true {
let number = n * ๋ชซ๊ณผ๋๋จธ์ง + ๋ชซ๊ณผ๋๋จธ์ง
answer += number
๋ชซ๊ณผ๋๋จธ์ง += 1
if ๋ชซ๊ณผ๋๋จธ์ง == n {
break
}
}
print(answer)
- ๊ตฌํด์ง โ๋ชซ๊ณผ ๋๋จธ์ง๊ฐ ๊ฐ์ ์'๋ฅผ answer์ ๋ฐ๋ก ๋ํ๋ค
- ๐ค ์ด๋ฒ์ ๋ฐํ์์๋ฌ๊ฐ ๋ด๋ค.
- ๋ฐฐ์ด๋ ์ ์ผ๋๋ฐ ์ ๋ฐํ์์๋ฌ๊ฐ ๋จ์ง?
- ์ฑ์ ์ด ์ ๋๋ ๊ฒ๋ ์๋๊ณ , 96%์ ๋ ๋์ ๋ ๋ฐํ์์๋ฌ ๋ฐ์
- ํน์๋ ํด์ breakํ์ด๋ฐ์ ์๋น๊ธฐ๊ณ , ์ด๋ฅผ ์ํด ๋ชซ๊ณผ๋๋จธ์ง๋ฅผ 0๋ถํฐ ์์ํด ๋ณด์๋ค ( ํ์ด4 )
ํ์ด4 (๋ง์์ต๋๋ค)
let n = Int(readLine()!)!
var ๋ชซ๊ณผ๋๋จธ์ง = 0
var answer = 0
while true {
๋ชซ๊ณผ๋๋จธ์ง += 1
if ๋ชซ๊ณผ๋๋จธ์ง == n {
break
}
let number = n * ๋ชซ๊ณผ๋๋จธ์ง + ๋ชซ๊ณผ๋๋จธ์ง
answer += number
}
print(answer)
์ต์ข ์ ์ผ๋ก ๋ต์ผ๋ก ์ ์ถํด ๋ง์ ์ฝ๋๋ ์ด๋ ๊ฒ ๋์๋ค.
ํ์ด 3์์ ๋ฐํ์์๋ฌ๊ฐ ์ ๋ฐ์ํ๋์ง๋ ์์ง๋ ์ ํํ ๋ชจ๋ฅด๊ฒ ์ง๋ง..
์๋ง while๋ฌธ ๋ด์ break ํ์ด๋ฐ์ด ์์ ์์ง ์์์? ๋ผ๊ณ ์ถ์ธกํด ๋ณด์๋ค.
'ํ๋ก๊ทธ๋๋ฐ > ์๊ณ ๋ฆฌ์ฆ ํ์ด Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 2309] ์ผ๊ณฑ ๋์์ด (0) | 2022.09.07 |
---|---|
[๋ฐฑ์ค 2386] ๋๋น์ ์์ด ๊ณต๋ถ (0) | 2022.09.07 |
[๋ฐฑ์ค 2355] ์๊ทธ๋ง (0) | 2022.09.06 |
[๋ฐฑ์ค 1864] ๋ฌธ์ด ์ซ์ (0) | 2022.09.02 |
[๋ฐฑ์ค 1731] ์ถ๋ก (0) | 2022.08.30 |