๐์๊ณ ๋ฆฌ์ฆ/๋ฐฑ์ค
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/y4e7i/btq2kBFWMEo/hoBWkZVzm83meixpAEwss0/img.png)
![](https://tistory1.daumcdn.net/tistory/4446718/skin/images/no-image.jpg)
๋ฌธ์ ์์ด S๊ฐ ์ด๋ค ์ Sk๋ฅผ ๊ธฐ์ค์ผ๋ก S1 Sk+1 > ... SN-1 > SN์ ๋ง์กฑํ๋ค๋ฉด, ๊ทธ ์์ด์ ๋ฐ์ดํ ๋ ์์ด์ด๋ผ๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด, {10, 20, 30, 25, 20}๊ณผ {10, 20, 30, 40}, {50, 40, 25, 10} ์ ๋ฐ์ดํ ๋ ์์ด์ด์ง๋ง, {1, 2, 3, 2, 1, 2, 3, 2, 1}๊ณผ {10, 20, 30, 40, 20, 30} ์ ๋ฐ์ดํ ๋ ์์ด์ด ์๋๋ค. ์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ทธ ์์ด์ ๋ถ๋ถ ์์ด ์ค ๋ฐ์ดํ ๋ ์์ด์ด๋ฉด์ ๊ฐ์ฅ ๊ธด ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ ์ฒซ์งธ ์ค์ ์์ด A์ ํฌ๊ธฐ N์ด ์ฃผ์ด์ง๊ณ , ๋์งธ ์ค์๋ ์์ด A๋ฅผ ์ด๋ฃจ๊ณ ์๋ Ai๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/KFVD0/btq2lqQmgsf/OB0K3sWWxPkkZz3ZNeRKi1/img.png)
![](https://tistory1.daumcdn.net/tistory/4446718/skin/images/no-image.jpg)
๋ฌธ์ N-Queen ๋ฌธ์ ๋ ํฌ๊ธฐ๊ฐ N × N์ธ ์ฒด์คํ ์์ ํธ N๊ฐ๋ฅผ ์๋ก ๊ณต๊ฒฉํ ์ ์๊ฒ ๋๋ ๋ฌธ์ ์ด๋ค. N์ด ์ฃผ์ด์ก์ ๋, ํธ์ ๋๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ ์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N < 15) ์ถ๋ ฅ ์ฒซ์งธ ์ค์ ํธ N๊ฐ๋ฅผ ์๋ก ๊ณต๊ฒฉํ ์ ์๊ฒ ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ์ ๋ต N = int(input()) count = 0 # row : ํ / right : ์ฐ์ํฅ ๋๊ฐ์ / left : ์ข์ํฅ ๋๊ฐ์ row, right, left = [False] * N, [False] * (2 * N - 1), [False] * (2 * N - 1) def solve(j): global count # N๊ฐ์ ํธ์ ๋ค ๋์์ ๋ if j == N: count += 1 retur..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/cM0qlK/btq2pkhLszq/kijGvTNp8Jg5GTl0ot71z0/img.png)
![](https://tistory1.daumcdn.net/tistory/4446718/skin/images/no-image.jpg)
๋ฌธ์ ์์ฐ์ N๊ณผ M์ด ์ฃผ์ด์ก์ ๋, ์๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ธธ์ด๊ฐ M์ธ ์์ด์ ๋ชจ๋ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. 1๋ถํฐ N๊น์ง ์์ฐ์ ์ค์์ ์ค๋ณต ์์ด M๊ฐ๋ฅผ ๊ณ ๋ฅธ ์์ด ๊ณ ๋ฅธ ์์ด์ ์ค๋ฆ์ฐจ์์ด์ด์ผ ํ๋ค. ์ ๋ ฅ ์ฒซ์งธ ์ค์ ์์ฐ์ N๊ณผ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ M ≤ N ≤ 8) ์ถ๋ ฅ ํ ์ค์ ํ๋์ฉ ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ด์ ์ถ๋ ฅํ๋ค. ์ค๋ณต๋๋ ์์ด์ ์ฌ๋ฌ ๋ฒ ์ถ๋ ฅํ๋ฉด ์๋๋ฉฐ, ๊ฐ ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํด์ผ ํ๋ค. ์์ด์ ์ฌ์ ์์ผ๋ก ์ฆ๊ฐํ๋ ์์๋ก ์ถ๋ ฅํด์ผ ํ๋ค. ์ ๋ต from itertools import combinations import sys input = sys.stdin.readline N, M = map(int, input().split()) for i in combination..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/s0XaK/btq1XLhoebU/e0fzH9V9b5m9U7KTI05sBK/img.png)
![](https://tistory1.daumcdn.net/tistory/4446718/skin/images/no-image.jpg)
๋ฌธ์ ๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค. 1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค. ์ฒ ์๋ ์ด ์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ๋ ์ง์ ๋ชจ์์ธ ๋จ์ง๋ฅผ ์ ์ํ๊ณ , ๋จ์ง์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ค ํ๋ค. ์ฌ๊ธฐ์ ์ฐ๊ฒฐ๋์๋ค๋ ๊ฒ์ ์ด๋ค ์ง์ด ์ข์ฐ, ํน์ ์๋์๋ก ๋ค๋ฅธ ์ง์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. ๋๊ฐ์ ์์ ์ง์ด ์๋ ๊ฒฝ์ฐ๋ ์ฐ๊ฒฐ๋ ๊ฒ์ด ์๋๋ค. ๋ ์ ๋จ์ง๋ณ๋ก ๋ฒํธ๋ฅผ ๋ถ์ธ ๊ฒ์ด๋ค. ์ง๋๋ฅผ ์ ๋ ฅํ์ฌ ๋จ์ง์๋ฅผ ์ถ๋ ฅํ๊ณ , ๊ฐ ๋จ์ง์ ์ํ๋ ์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ ์ฒซ ๋ฒ์งธ ์ค์๋ ์ง๋์ ํฌ๊ธฐ N(์ ์ฌ๊ฐํ์ด๋ฏ๋ก ๊ฐ๋ก์ ์ธ๋ก์ ํฌ๊ธฐ๋ ๊ฐ์ผ๋ฉฐ 5≤N≤25)์ด ์ ๋ ฅ๋๊ณ , ๊ทธ ๋ค์ N์ค์๋ ๊ฐ๊ฐ N๊ฐ์ ์๋ฃ(0ํน์ 1)๊ฐ ์ ๋ ฅ๋๋ค. ์ถ๋ ฅ ์ฒซ ๋ฒ์งธ ์ค์๋ ์ด ๋จ์ง์๋ฅผ ์ถ๋ ฅํ์์ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/evhHm2/btq1WgB2qqI/BPFhrK5R4hYCSy3JBZ0eBk/img.png)
![](https://tistory1.daumcdn.net/tistory/4446718/skin/images/no-image.jpg)
๋ฌธ์ ์๋ ๊ณผ ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ ์ ์ฌ๊ฐํ์นธ๋ค๋ก ์ด๋ฃจ์ด์ง ์ ์ฌ๊ฐํ ๋ชจ์์ ์ข ์ด๊ฐ ์ฃผ์ด์ ธ ์๊ณ , ๊ฐ ์ ์ฌ๊ฐํ๋ค์ ํ์์์ผ๋ก ์น ํด์ ธ ์๊ฑฐ๋ ํ๋์์ผ๋ก ์น ํด์ ธ ์๋ค. ์ฃผ์ด์ง ์ข ์ด๋ฅผ ์ผ์ ํ ๊ท์น์ ๋ฐ๋ผ ์๋ผ์ ๋ค์ํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง ์ ์ฌ๊ฐํ ๋ชจ์์ ํ์์ ๋๋ ํ๋์ ์์ข ์ด๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋ค. ์ ์ฒด ์ข ์ด์ ํฌ๊ธฐ๊ฐ N×N(N=2k, k๋ 1 ์ด์ 7 ์ดํ์ ์์ฐ์) ์ด๋ผ๋ฉด ์ข ์ด๋ฅผ ์๋ฅด๋ ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค. ์ ์ฒด ์ข ์ด๊ฐ ๋ชจ๋ ๊ฐ์ ์์ผ๋ก ์น ํด์ ธ ์์ง ์์ผ๋ฉด ๊ฐ๋ก์ ์ธ๋ก๋ก ์ค๊ฐ ๋ถ๋ถ์ ์๋ผ์ ์ I, II, III, IV์ ๊ฐ์ด ๋๊ฐ์ ํฌ๊ธฐ์ ๋ค ๊ฐ์ N/2 × N/2์์ข ์ด๋ก ๋๋๋ค. ๋๋์ด์ง ์ข ์ด I, II, III, IV ๊ฐ๊ฐ์ ๋ํด์๋ ์์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ ๊ฐ์ ์์ผ๋ก ์น ํด์ ธ ์์ง ์์ผ๋ฉด ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋๊ฐ์ ํฌ๊ธฐ์..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bgzOrt/btq1R8Dj1zZ/wHclzmhVZ3QjnxS96hP3Vk/img.png)
![](https://tistory1.daumcdn.net/tistory/4446718/skin/images/no-image.jpg)
๋ฌธ์ ์ค๋์ ์คํํธ๋งํฌ์ ๋ค๋๋ ์ฌ๋๋ค์ด ๋ชจ์ฌ์ ์ถ๊ตฌ๋ฅผ ํด๋ณด๋ ค๊ณ ํ๋ค. ์ถ๊ตฌ๋ ํ์ผ ์คํ์ ํ๊ณ ์๋ฌด ์ฐธ์๋ ์๋๋ค. ์ถ๊ตฌ๋ฅผ ํ๊ธฐ ์ํด ๋ชจ์ธ ์ฌ๋์ ์ด N๋ช ์ด๊ณ ์ ๊ธฐํ๊ฒ๋ N์ ์ง์์ด๋ค. ์ด์ N/2๋ช ์ผ๋ก ์ด๋ฃจ์ด์ง ์คํํธ ํ๊ณผ ๋งํฌ ํ์ผ๋ก ์ฌ๋๋ค์ ๋๋ ์ผ ํ๋ค. BOJ๋ฅผ ์ด์ํ๋ ํ์ฌ ๋ต๊ฒ ์ฌ๋์๊ฒ ๋ฒํธ๋ฅผ 1๋ถํฐ N๊น์ง๋ก ๋ฐฐ์ ํ๊ณ , ์๋์ ๊ฐ์ ๋ฅ๋ ฅ์น๋ฅผ ์กฐ์ฌํ๋ค. ๋ฅ๋ ฅ์น Sij๋ i๋ฒ ์ฌ๋๊ณผ j๋ฒ ์ฌ๋์ด ๊ฐ์ ํ์ ์ํ์ ๋, ํ์ ๋ํด์ง๋ ๋ฅ๋ ฅ์น์ด๋ค. ํ์ ๋ฅ๋ ฅ์น๋ ํ์ ์ํ ๋ชจ๋ ์์ ๋ฅ๋ ฅ์น Sij์ ํฉ์ด๋ค. Sij๋ Sji์ ๋ค๋ฅผ ์๋ ์์ผ๋ฉฐ, i๋ฒ ์ฌ๋๊ณผ j๋ฒ ์ฌ๋์ด ๊ฐ์ ํ์ ์ํ์ ๋, ํ์ ๋ํด์ง๋ ๋ฅ๋ ฅ์น๋ Sij์ Sji์ด๋ค. N=4์ด๊ณ , S๊ฐ ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์. i/j 1 2 ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/AmO0z/btq1Qm2ONpb/KDgRY0LyqSB5h93NUNk0S0/img.png)
![](https://tistory1.daumcdn.net/tistory/4446718/skin/images/no-image.jpg)
๋ฌธ์ ๊ทธ๋ํ๋ฅผ DFS๋ก ํ์ํ ๊ฒฐ๊ณผ์ BFS๋ก ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ๋ ์ด์ ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ด ์๋ ๊ฒฝ์ฐ ์ข ๋ฃํ๋ค. ์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง์ด๋ค. ์ ๋ ฅ ์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N(1 ≤ N ≤ 1,000), ๊ฐ์ ์ ๊ฐ์ M(1 ≤ M ≤ 10,000), ํ์์ ์์ํ ์ ์ ์ ๋ฒํธ V๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๊ฐ์ ์ด ์ฐ๊ฒฐํ๋ ๋ ์ ์ ์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ค ๋ ์ ์ ์ฌ์ด์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ด ์์ ์ ์๋ค. ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ค. ์ถ๋ ฅ ์ฒซ์งธ ์ค์ DFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ, ๊ทธ ๋ค์ ์ค์๋ BFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. V๋ถํฐ ๋ฐฉ๋ฌธ๋ ์ ์ ์์๋๋ก ์ถ๋ ฅํ๋ฉด ๋๋ค. ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/d1ID9B/btq1IRVuc1P/GoWFJ6KIwKKKYIfGG8fx71/img.png)
![](https://tistory1.daumcdn.net/tistory/4446718/skin/images/no-image.jpg)
๋ฌธ์ ์๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ํต๊ณํ์์ ์๋นํ ์ค์ํ ์ผ์ด๋ค. ํต๊ณํ์์ N๊ฐ์ ์๋ฅผ ๋ํํ๋ ๊ธฐ๋ณธ ํต๊ณ๊ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์๋ค. ๋จ, N์ ํ์๋ผ๊ณ ๊ฐ์ ํ์. ์ฐ์ ํ๊ท : N๊ฐ์ ์๋ค์ ํฉ์ N์ผ๋ก ๋๋ ๊ฐ ์ค์๊ฐ : N๊ฐ์ ์๋ค์ ์ฆ๊ฐํ๋ ์์๋ก ๋์ดํ์ ๊ฒฝ์ฐ ๊ทธ ์ค์์ ์์นํ๋ ๊ฐ ์ต๋น๊ฐ : N๊ฐ์ ์๋ค ์ค ๊ฐ์ฅ ๋ง์ด ๋ํ๋๋ ๊ฐ ๋ฒ์ : N๊ฐ์ ์๋ค ์ค ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ฐจ์ด N๊ฐ์ ์๊ฐ ์ฃผ์ด์ก์ ๋, ๋ค ๊ฐ์ง ๊ธฐ๋ณธ ํต๊ณ๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ ์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N(1 ≤ N ≤ 500,000)์ด ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ N๊ฐ์ ์ค์๋ ์ ์๋ค์ด ์ฃผ์ด์ง๋ค. ์ ๋ ฅ๋๋ ์ ์์ ์ ๋๊ฐ์ 4,000์ ๋์ง ์๋๋ค. ์ถ๋ ฅ ์ฒซ์งธ ์ค์๋ ์ฐ์ ํ๊ท ์ ์ถ๋ ฅํ๋ค. ์์์ ์ดํ ์ฒซ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผํ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/br0WC6/btq1I8vzszL/qVaijKnVTzPTsrAh70ePH0/img.png)
![](https://tistory1.daumcdn.net/tistory/4446718/skin/images/no-image.jpg)
๋ฌธ์ N๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์์ ๋, ํฌ๊ธฐ๊ฐ ์์์ธ ๋ถ๋ถ์์ด ์ค์์ ๊ทธ ์์ด์ ์์๋ฅผ ๋ค ๋ํ ๊ฐ์ด S๊ฐ ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ ์ฒซ์งธ ์ค์ ์ ์์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ N๊ณผ ์ ์ S๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) ๋์งธ ์ค์ N๊ฐ์ ์ ์๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ์ ์์ ์ ๋๊ฐ์ 100,000์ ๋์ง ์๋๋ค. ์ถ๋ ฅ ์ฒซ์งธ ์ค์ ํฉ์ด S๊ฐ ๋๋ ๋ถ๋ถ์์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค. ์ ๋ต import sys import itertools N, S = map(int, sys.stdin.readline().split()) numbers = list(map(int, sys.stdin.readline().split())) answer = 0 ..