[Algorithm] ์ธ์ฌ๊ณ ๊ณผ
๐ ๋ฌธ์
์ํธ๋ค ํ์ฌ๋ ์ฐ๋ง๋ง๋ค 1๋
๊ฐ์ ์ธ์ฌ๊ณ ๊ณผ์ ๋ฐ๋ผ ์ธ์ผํฐ๋ธ๋ฅผ ์ง๊ธํฉ๋๋ค. ๊ฐ ์ฌ์๋ง๋ค ๊ทผ๋ฌด ํ๋ ์ ์์ ๋๋ฃ ํ๊ฐ ์ ์๊ฐ ๊ธฐ๋ก๋์ด ์๋๋ฐ ๋ง์ฝ ์ด๋ค ์ฌ์์ด ๋ค๋ฅธ ์์์ ์ฌ์๋ณด๋ค ๋ ์ ์๊ฐ ๋ชจ๋ ๋ฎ์ ๊ฒฝ์ฐ๊ฐ ํ ๋ฒ์ด๋ผ๋ ์๋ค๋ฉด ๊ทธ ์ฌ์์ ์ธ์ผํฐ๋ธ๋ฅผ ๋ฐ์ง ๋ชปํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ์ฌ์๋ค์ ๋ํด์๋ ๋ ์ ์์ ํฉ์ด ๋์ ์์ผ๋ก ์์ฐจ๋ฅผ ๋ด์ด ์์ฐจ์ ๋ฐ๋ผ ์ธ์ผํฐ๋ธ๊ฐ ์ฐจ๋ฑ ์ง๊ธ๋ฉ๋๋ค. ์ด๋, ๋ ์ ์์ ํฉ์ด ๋์ผํ ์ฌ์๋ค์ ๋์์ฐจ์ด๋ฉฐ, ๋์์ฐจ์ ์๋งํผ ๋ค์ ์์ฐจ๋ ๊ฑด๋ ๋๋๋ค. ์๋ฅผ ๋ค์ด ์ ์์ ํฉ์ด ๊ฐ์ฅ ํฐ ์ฌ์์ด 2๋ช
์ด๋ผ๋ฉด 1๋ฑ์ด 2๋ช
์ด๊ณ 2๋ฑ ์์ด ๋ค์ ์์ฐจ๋ 3๋ฑ๋ถํฐ์
๋๋ค.
๊ฐ ์ฌ์์ ๊ทผ๋ฌด ํ๋ ์ ์์ ๋๋ฃ ํ๊ฐ ์ ์ ๋ชฉ๋ก scores์ด ์ฃผ์ด์ก์ ๋, ์ํธ์ ์์ฐจ๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- 1 ≤ scores์ ๊ธธ์ด ≤ 100,000
- scores์ ๊ฐ ํ์ ํ ์ฌ์์ ๊ทผ๋ฌด ํ๋ ์ ์์ ๋๋ฃ ํ๊ฐ ์ ์๋ฅผ ๋ํ๋ด๋ฉฐ [a, b] ํํ์
๋๋ค.
- scores[0]์ ์ํธ์ ์ ์์ ๋๋ค.
- 0 ≤ a, b ≤ 100,000
- ์ํธ๊ฐ ์ธ์ผํฐ๋ธ๋ฅผ ๋ฐ์ง ๋ชปํ๋ ๊ฒฝ์ฐ -1์ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์
[[2,2],[1,4],[3,2],[3,2],[2,1]] |
โ๏ธ ํ์ด
์ฒ์์๋ ์ํธ์ ๋น๊ตํด์ ๋์ผ๋ฉด ์นด์ดํ ํด์ฃผ๊ณ ๋ง์ฝ ์ํธ๊ฐ ๋ชป๋ฐ๋ ์๋์ ๋น๊ตํ๋ฉด -1์ ๋ฆฌํดํด์คฌ๋ค. ์ํธ๋ณด๋ค ์์ ์๋ ์ฌ๋์ด ๋ชป๋ฐ๋ ์ํฉ์ด ์๋ค๋ฉด ์ํธ๋ ๋ชป๋ฐ์ ์ ์์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค. [[2, 7], [5, 5], [6, 6]] ์ด๋ฐ ์ผ์ด์ค์์๋ 2๋ฒ์งธ, 3๋ฒ์งธ ์ฌ์์ ์ํธ๋ณด๋ค ๋๋ค. ํ์ง๋ง 2๋ฒ์งธ ์ฌ์์ ๊ฒฝ์ฐ 3๋ฒ์งธ ์ฌ์์ ๊ทผ๋ฌด ํ๋, ๋๋ฃ ํ๊ฐ ์ ์๊ฐ ๋ ๋ค ๋ฎ๊ธฐ ๋๋ฌธ์ ์ ์ธ๋๋ฏ๋ก ์ํธ์ ์์ฐจ๋ 2๋ฑ์ด ๋๋ค.
์ ๋ฐ์ ์ผ๋ก๋ ๋๊ฐ์ ์ ์๋ฅผ ์ผ์ผํ ๋น๊ตํ๊ธฐ์๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ ๊ฒ ์ด๋ผ๊ณ ์๊ฐํ๊ณ ์ ๋ ฌ์ ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. ํ๋์ ์ ์์ ๋ํด์ ์ ๋ ฌํ๊ณ ๋๋จธ์ง ์ ์๋ฅผ์ ํฉ์ ๋น๊ตํ๋ ๋ฐฉ์์ ์ ํํ๋ค. ๋์ ์๊ฐ์ ์์ฐจ์ด๋ฏ๋ก ์ ์ธ, ํฉ์ด ๋ฎ์ ๊ฒฝ์ฐ ์ ์ธํ๊ณ ์์ ์ ์์์ธ ์ฌ์์ ์ฒดํฌํ๋ค.
๋๋ ๋จผ์ ์ ๋ ฌ์ ์ํํ ๋ ๊ทผ๋ฌด ํ๋ ์ ์๋ฅผ ๋น๊ตํ๊ณ ์ ์๊ฐ ๊ฐ์ ๋ ๋๋ฃ ํ๊ฐ ์ ์๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค. ์ด ์ด์ ๋ ์์ ๊ทผ๋ฌด ํ๋ ์ ์๋ถํฐ ๋น๊ต๊ฐ ๋ ํ ๋ฐ ๋๋ฃํ๊ฐ๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ทผ๋ฌด ํ๋ ์ ์๊ฐ ๋์ผํ ๋ ๋๋ฃ ํ๊ฐ ์ ์๊ฐ ์ต๋๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด ๋ ์ ์๊ฐ ์ด๋ค ์ฌ์๊ณผ ๋น๊ตํด์ ์์ ์ ๋ฐ์ ์๊ธฐ ๋๋ฌธ์ -1์ ๋ฐํํ๋ค.(์ด๋ ์ํธ ์๊ธฐ ์์ ์ ์ ์์ธ์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ฒ์์ scores ๋ฐฐ์ด์ ๊ฐ๊ฐ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํด์คฌ๋ค.) ๋ฐ๋๋ก ๋ง์ฝ ํ์ฌ ๋๋ฃ ํ๋ ์ ์๊ฐ ๋ ํฌ๋ค๋ฉด ์ต๋๊ฐ์ ์ต์ ํ์์ผ์ฃผ๊ณ ๋ ์ ์์ ํฉ์ ๋น๊ตํ์ฌ ์์ ์ ์์ ์ฌ์์ธ์ง ํ์ธํ๊ณ answer์ 1์ ๋ํด์คฌ๋ค. ์์ ์ฌ์์ ์์ + 1์ ํ ๋ฑ์๊ฐ ์์ ์ ๋ฑ์์ด๋ฏ๋ก answer + 1์ ํด์คฌ๋ค.
โจ๏ธ ์ฝ๋
function solution(scores) {
var answer = 0;
const sum = scores[0][0] + scores[0][1];
scores = scores.map((score, i) => [...score, i]);
scores.sort((a, b) => {
if (a[0] === b[0]) return a[1] - b[1];
return b[0] - a[0];
});
let maxS2 = 0;
for (const score of scores) {
const [s1, s2, i] = score;
if (s2 < maxS2) {
if (i === 0) return -1;
} else {
maxS2 = s2;
if (s1 + s2 > sum) answer += 1;
}
}
return answer + 1;
}