๋ฐฑ์ค ๋ฌธ์ ๋ชจ์
๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/3273
3273๋ฒ: ๋ ์์ ํฉ
n๊ฐ์ ์๋ก ๋ค๋ฅธ ์์ ์ ์ a1, a2, ..., an์ผ๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์๋ค. ai์ ๊ฐ์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 1000000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ์์ฐ์ x๊ฐ ์ฃผ์ด์ก์ ๋, ai + aj = x (1 ≤ i < j ≤ n)์ ๋ง์กฑํ๋
www.acmicpc.net
๋ฌธ์
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)
์ถ๋ ฅ
๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์์
์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ
- ์ ๋ ฌ
- ํฌ ํฌ์ธํฐ
๋ฌธ์ ํ์ด
- ์ ์์ ๊ฐ์ n์ ์ ๋ ฅ๋ฐ๊ณ , ์์ด์ ์ ๋ ฅ๋ฐ์ ์ ๋ ฌํ ํ arr์ ์ ์ฅํ๋ค. ์ฐพ์ผ๋ ค๋ ์ x๋ ์ ๋ ฅ๋ฐ๋๋ค.
- start๋ 0, end๋ n-1๋ก ์ด๊ธฐ๊ฐ์ ์ค์ ํ๋ค.
- arr[start] + arr[end]๊ฐ x ๋ผ๋ฉด, result๋ฅผ 1 ์ฆ๊ฐ์ํค๊ณ , start๋ 1 ์ฆ๊ฐ, end๋ 1 ๊ฐ์์ํจ๋ค.
- ๋ํ ๊ฐ์ด x๋ณด๋ค ์๋ค๋ฉด start๋ฅผ 1 ์ฆ๊ฐ์ํค๊ณ , ์๋๋ผ๋ฉด end๋ฅผ 1 ๊ฐ์์ํจ๋ค.
์์ค์ฝ๋
let n = Int(readLine()!)!
let arr = readLine()!.split(separator: " ").map{Int(String($0))!}.sorted()
let x = Int(readLine()!)!
var result = 0
var start = 0, end = n-1
while start < end {
switch arr[start] + arr[end] {
case x:
result += 1
start += 1
end -= 1
case ..<x:
start += 1
default:
end -= 1
}
}
print(result)
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ๋ฐฑ์ค 10773๋ฒ - ์ ๋ก (1) | 2023.03.29 |
---|---|
[Swift] ๋ฐฑ์ค 1406๋ฒ - ์๋ํฐ (0) | 2023.03.27 |
[Swift] ๋ฐฑ์ค 1475๋ฒ - ๋ฐฉ ๋ฒํธ (0) | 2023.03.26 |
[Swift] ๋ฐฑ์ค 1919๋ฒ - ์ ๋๊ทธ๋จ ๋ง๋ค๊ธฐ (0) | 2023.03.25 |
[Swift] ๋ฐฑ์ค 11328๋ฒ - Strfry (0) | 2023.03.25 |