Algorithm

[Algorithm] ์ธ์‚ฌ๊ณ ๊ณผ

ghkdu2 2023. 3. 13. 15:21

๐Ÿ“‹ ๋ฌธ์ œ


์™„ํ˜ธ๋„ค ํšŒ์‚ฌ๋Š” ์—ฐ๋ง๋งˆ๋‹ค 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;
}