ํ๋ก๊ทธ๋๋จธ์ค์ ์คํ์ด ์ธ์์ฐฉ์ ๋ฌธ์ ์ธ๋ฐ ๋๋ต
//์คํ์ด๋ค์ ๋งค์ผ ๋ค๋ฅธ ์ท์ ์กฐํฉํ์ฌ ์ ์ด ์์ ์ ์์ฅํฉ๋๋ค.
ย ย //์๋ฅผ ๋ค์ด ์คํ์ด๊ฐ ๊ฐ์ง ์ท์ด ์๋์ ๊ฐ๊ณ ์ค๋ ์คํ์ด๊ฐ ๋๊ทธ๋ ์๊ฒฝ,
ย ย //๊ธด ์ฝํธ, ํ๋์ ํฐ์ ์ธ ๋ฅผ ์ ์๋ค๋ฉด ๋ค์๋ ์ ์ฒญ๋ฐ์ง๋ฅผ ์ถ๊ฐ๋ก ์ ๊ฑฐ๋
ย ย //๋๊ทธ๋ ์๊ฒฝ ๋์ ๊ฒ์ ์ ๊ธ๋ผ์ค๋ฅผ ์ฐฉ์ฉํ๊ฑฐ๋ ํด์ผ ํฉ๋๋ค.
์ด๋ฌ๋ฉด์ [["์ ๊ธ๋ผ์ค", "์๊ฒฝ"], [๋ฐํ, ์์ท], [๋์์๊ฒฝ, ์๊ฒฝ]]
์ด๋ฐ์์ผ๋ก ๊ตฌ์ฑ๋์ด์์ด์ cloth[i,1]์๋ ๋ถ์ย ย cloth[i,0]์๋ ์ฐฉ์ฉํ๋ ๋ฌผํ์ด ์์๋
์คํ์ด๊ฐ ๋ณ์ฅํ ์์๋ ๊ฒฝ์ฐ์ ์ ๊ตฌํ๊ธฐ ์ ๋๋ค.
์ ๊ทธ๋ฅ ๋์ ๋ฌ๋ฆฌ๋ก ํ์์ต๋๋ค.
๊ทผ๋ฐ ๋ค๋ฅธ์ฌ๋ ๋ต๋ณ์ค์ Linq ํ์ค๋ก ๋๋ธ์ฌ๋์ด ์์ด์ ์ง๋ฌธํด๋ด์
๋๋์ฒด ์ ๊ฒ ๋ฌด์จ ๊ตฌ์กฐ๋ก ๋์๊ฐ๋๊ฑฐ์ฃ ..
ย ย ย ย public int solution2(string[,] clothes)
ย ย ย ย {
ย ย ย ย ย ย return Enumerable.Range(0, clothes.GetLength(0))
ย ย ย ย ย ย ย ย .Select(i => clothes[i, 1])
ย ย ย ย ย ย ย ย .GroupBy(p => p)
ย ย ย ย ย ย ย ย .Select(g => g.Count() + 1)
ย ย ย ย ย ย ย ย .Aggregate(1, (p, q) => p * q) - 1;
ย ย ย ย }
๋ถ์๊ฐ ์ค์ํ์ง ์ค์ ๋ฌผํ์ด ์ค์ํ ๊ฑด ์๋๋ ๊ฐ ๊ฐ๋ค์ ๋ถ์ ๊ฐ์ผ๋ก ๋ณํํ๊ณ (์ฒ์ select), ๊ฐ์ ๊ฐ ์ ๊ฐ์ง๊ฒ๋ค(=๊ฐ์ ๋ถ์์ ์ฐฉ์ฉํ๋ ๊ฒ๋ค)๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด์ฃผ๊ณ (groupby), ๊ฐ ๊ทธ๋ฃน์ ๊ทธ ๊ทธ๋ฃน์์ ์ ํํ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ก ๋ณํํ๊ณ (count+1, ํด๋น ๋ถ์ ์ ์ ํํ๋ ๊ฒฝ์ฐ ํฌํจ์ด๋),
๊ฐ ๋ถ์๋ ๋ ๋ฆฝ์ ์ด๋ ๊ฒฝ์ฐ์ ์ ์ ์ฒด ๊ณฑ(๋ง์ง๋ง aggregate)ํ ๋ค์์, ์์ ์ฐฉ์ฉ ์ํ ๊ฒฝ์ฐ๋ ์ ์ธํด์ผ ํ๋ -1. ๊ทธ๋ฅ ์์๋๋ก ๊ฐ๊ฐ ์ ํ ์๋ ๊ฑฐ ์๋ฏธ ๊ทธ๋๋ก ์ดํดํ๋ฉด ๋จ
์ ๋ง ๊ฐ์ฌํฉ๋๋ค. Linq๊ฐ sql ๋ฒ ์ด์ค๋ผ์ sql ๋ฐฐ์ฐ๋ฉด ์ข๋ ์ดํดํ๊ธฐ ์ฌ์ธ๋ ค๋์?
linq๋ฅผ ๊ณต๋ถํ๊ธฐ ์ํด sql์ ๊ณต๋ถํ๋ ๊ฑด ์ข ์ด์ํ ๊ฒ ๊ฐ์ต๋๋ค. linq๊ฐ sql ๋ฒ ์ด์ค๋ผ๊ธฐ๋ณด๋ค๋ ์ ์ธํ, ํจ์ํ ์ธ์ด์์์ ์ฌ๊ณ ๋ฐฉ์์ ๊ฐ์ ธ์จ๊ฑฐ๋ผ๊ณ ๋ณด๋๊ฒ ๋ ๋ง๋ค๊ณ ์๊ฐํ๋๋ฐ, sql์ ๊ณต๋ถํ๋๊ฒ ๋์์ด ์ ๋๋ ๊ฑด ์๋๊ฒ ์ง๋ง ์ฃผ๊ฐ์ด ์ ๋๋๋ ๋๋์ธ ๊ฑฐ ๊ฐ์์. linq๋ฅผ ์ ์ดํดํ๊ณ ์ถ์ผ๋ฉด linq๋ฅผ ๊ณต๋ถํ๋ฉด ๋๋ ๊ฒ ์๋๊น์
์๊ฒ ์ต๋๋ค.