๋ฌธ์ ์ค๋ช
n๊ฐ์ ์๋ก ๋ค๋ฅธ ์์ ์ ์ a1, a2, ..., an์ผ๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์๋ค. ai์ ๊ฐ์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 1000000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ์์ฐ์ x๊ฐ ์ฃผ์ด์ก์ ๋, ai + aj = x (1 ≤ i < j ≤ n)์ ๋ง์กฑํ๋ (ai, aj)์์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ด์ ํฌ๊ธฐ n์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ ์์ด์ ํฌํจ๋๋ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ ์งธ ์ค์๋ x๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ n ≤ 100000, 1 ≤ x ≤ 2000000)
์ถ๋ ฅ
๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์์
์ ๋ ฅ
9
5 12 7 10 9 1 2 3 11
13
์ถ๋ ฅ
3
๋ด ๋ฌธ์ ํ์ด
import Foundation
let count = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: " ").map({Int($0)!}).sorted()
let sum = Int(readLine()!)!
var max = nums.count
var result = 0
for i in 0..<nums.count-1 {
if i < max {
for j in (i+1..<max).reversed() {
if i < j {
if nums[i] + nums[j] == sum {
result += 1
max = j
break
}
}
}
}
}
print(result)
- ์ด๋ถํ์์ ์ด์ฉํ์ฌ ํ์ดํ๋ค.
- ํจ์จ์ ์ธ ํ์์ ์ํ์ฌ ๋จผ์ ์ ๋ ฅ๋ฐ์ ์ซ์๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
- 2์ค for๋ฌธ์ ์ฌ์ฉํ๋๋ฐ, ๋ฐ๊นฅ for๋ฌธ์์๋ ์์๋๋ก ๊ฒ์ฌ๋ฅผ ํ๊ณ
์์ชฝ for๋ฌธ์์๋ ๋ค์์๋ถํฐ ๋ฐ๋๋ก ๊ฒ์ฌํ๋ค. - ์ด์ฐจํผ ํ ๋ฒ ์์ด ๋งบ์ด์ง ์ซ์๋ ๋์ด์ ๋ค๋ฅธ ์ซ์์๋
์์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์ (์ค๋ณต๋๋ ์๋ ์ ๋ ฅ๋์ง ์๊ธฐ ๋๋ฌธ)
์์ชฝ for๋ฌธ์์, ์์ด ๋งบ์ด์ง์ ํ์ธํ ๋๋ง๋ค max๋ฅผ ๋ฐ๊ฟ์ฃผ์ด ์ธ๋ฐ์๋ ๋ฐ๋ณต์ ํผํ๋ค. - ๊ณ์ ์์ ๋งบ์ผ๋ฉฐ max๋ฅผ ๋ฎ์ ์ซ์๋ก ๋ฐ๊ฟ์ฃผ๋ค๋ณด๋ฉด ์ธ์ ๊ฐ i๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ง ์ ์๊ธฐ ๋๋ฌธ์,
i < max ๋ผ๋ ์กฐ๊ฑด์ ๋ ๋ฒ์งธ for๋ฌธ ์ ์ ๊ฑธ์ด์ฃผ์๋ค.
๐ก ํผ๋๋ฐฑ
- ์ฒ์์ ์ด๋ถํ์์ผ๋ก ํ ์๊ฐ์ ๋ชปํ๊ณ , ๊ทธ๋ฅ ์์ฐจ๋๋ก ๊ฒ์ฌํ๋ for๋ฌธ์ 2์ค์ผ๋ก ์ฌ์ฉํ๋๋ฐ,
๊ทธ๋ ๊ฒ ํ๋๊น ์๊พธ ์๊ฐ ์ด๊ณผ๋ก ํต๊ณผํ์ง ๋ชปํ๋ค. - ๊ตฌ๊ธ๋งํด์ ์ด๋ถํ์์ผ๋ก ํ์ด์ผํ๋ค๋ ์ ์ ์์๋ด์ด ํ์๋๋ฐ,
์ด ๋ฌธ์ ๋ฅผ ์์ ์ฆ์์ ๋ค์ ํ์ด์ ์ด๋ถํ์์ ์ ํํ ์ตํ๋ด์ผ๊ฒ ๋ค.
๋ฌธ์
'3๏ธโฃ Swift > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Algorithm] ํค๋ก๊ฑฐ BOJ #5397 (0) | 2021.07.30 |
---|---|
[Swift Algorithm] ์๋ํฐ BOJ #1406 (0) | 2021.07.30 |
[Swift Algorithm] ์ ๋๊ทธ๋จ ๋ง๋ค๊ธฐ BOJ #1919 (0) | 2021.07.30 |
[Swift Algorithm] ๋ฐฉ ๋ฒํธ BOJ #1475 (0) | 2021.07.30 |
[Swift Algorithm] ๋ฐฉ ๋ฐฐ์ BOJ #13300 (0) | 2021.07.30 |
๋๊ธ