https://www.acmicpc.net/problem/24263
(์๊ณ ๋ฆฌ์ฆ ์์ ๋ฌธ์ ๋ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฌด์์ธ์ง ํ์ธํ๊ณ ํ์ด๋ณด๊ธฐ)
๋ฌธ์
์ค๋๋ ์์ค์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ์ํ์๊ฐ ์์ ์กฐ๊ต๋ฅผ ํ๊ณ ์๋ค. ์๋น ๊ฐ ์์ ํ ๋ด์ฉ์ ํ์๋ค์ด ์ ์ดํดํ๋์ง ๋ฌธ์ ๋ฅผ ํตํด์ ํ์ธํด๋ณด์.
์ ๋ ฅ์ ํฌ๊ธฐ n์ด ์ฃผ์ด์ง๋ฉด MenOfPassion ์๊ณ ๋ฆฌ์ฆ ์ํ ์๊ฐ์ ์์ ์ถ๋ ฅ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ถ๋ ฅํด๋ณด์.
MenOfPassion ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
MenOfPassion(A[], n) {
sum <- 0;
for i <- 1 to n - 1
for j <- i + 1 to n
sum <- sum + A[i] × A[j]; # ์ฝ๋1
return sum;
}
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ๋ ฅ์ ํฌ๊ธฐ n(1 ≤ n ≤ 500,000)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฝ๋1 ์ ์ํ ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
๋์งธ ์ค์ ์ฝ๋1์ ์ํ ํ์๋ฅผ ๋คํญ์์ผ๋ก ๋ํ๋ด์์ ๋, ์ต๊ณ ์ฐจํญ์ ์ฐจ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋จ, ๋คํญ์์ผ๋ก ๋ํ๋ผ ์ ์๊ฑฐ๋ ์ต๊ณ ์ฐจํญ์ ์ฐจ์๊ฐ 3๋ณด๋ค ํฌ๋ฉด 4๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ1 | ์์ ์ถ๋ ฅ1 |
7 | 7 1 |
→ ์ฝ๋1 ์ด 21ํ ์ํ๋๊ณ ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๊ฐ์ด n²์ ๋น๋กํ๋ค.
์์ค ์ฝ๋
# ๋ฌธ์ ์๊ฐํ
n = int(input())
sum = 0
count = 0
for i in range(1,n):
for j in range(i+1,n+1):
sum += (i * j) # ์ฝ๋ 1
count += 1
print("{:^4}+({}*{})={:^4} ({:^2}๋ฒ ์ํ)\t".format(sum-(i*j),i,j,sum,count), end=" ")
print()
# ์ ๋ต ์ฝ๋
n = int(input())
print(int(n*(n-1)/2))
print(2)
ํ์ด
- ์ฒซ ๋ฒ์งธ for๋ฌธ์ ์ด n๋ฒ ์ํ
- ๋ ๋ฒ์งธ for๋ฌธ์ n-i๋ฒ ์ํ
- i=1์ธ ๊ฒฝ์ฐ, n-1๋ฒ ์ํ
- i=2์ธ ๊ฒฝ์ฐ, n-2๋ฒ ์ํ
- ์ํ ํ์ ๊ณต์์ ์ฒซ ๋ฒ์งธ ์ค์ ์ถ๋ ฅ
- ์ฒซ ๋ฒ์งธ for๋ฌธ์ด ์ํ๋ ํ์ n๊ณผ ๋ ๋ฒ์งธ for๋ฌธ์ด ์ํ๋ ํ์ n-i๋ฅผ ๊ณฑํ ๊ฐ (์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ์ํด 2๋ก ๋๋๊ธฐ)
- ์์ ๊ณต์์์ ์ต๊ณ ์ฐจํญ์ ์ฐจ์์ธ 2๋ฅผ ๋ ๋ฒ์งธ ์ค์ ์ถ๋ ฅ
- ์๊ฐ ๋ณต์ก๋(=์ฝ๋1์ ์ํํ์)๋ n*(n-1)/2์ด๋ฏ๋ก ์ต๊ณ ์ฐจํญ์ ์ฐจ์๋ 2
์ด์ ํฌ์คํ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์๊ฐ ๋ณต์ก๋์ ๋ํด ์๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์๋ค. ์ต์ํ ์ธ์ด๋ก for๋ฌธ์ด ์ด ๋ช ๋ฒ ์ํ๋๋์ง๋ฅผ ์๊ฐํํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
'์ฝ๋ฉ ๋ฌธ์ ํ์ด ๐ป > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค / ํ์ด์ฌ] ์๊ณ ๋ฆฌ์ฆ ์์ - ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๊ฐ 2 (0) | 2024.06.20 |
---|---|
[๋ฐฑ์ค / ํ์ด์ฌ] ์ผ๋ฐ ์ํ 1 - ์ง๋ฒ ๋ณํ (1) | 2024.01.25 |
[๋ฐฑ์ค / ํ์ด์ฌ] 2์ฐจ์ ๋ฐฐ์ด - ์์ข ์ด (0) | 2024.01.25 |