Zoeeey
Stack flows in you
Zoeeey
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (155)
    • ๐Ÿ’ก UXUI (4)
      • UXUI (2)
      • UI (2)
      • UX (0)
    • ๐ŸŸจ JavaScript (66)
      • ๊ฐœ๋… (42)
      • ์ •๋ฆฌ (2)
      • ๋ฌธ์ œํ’€๊ธฐ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์ฝ”๋”ฉ์• ํ”Œ) (15)
      • ์‘์šฉํ•˜์—ฌ ์ž๋™ํ™”or๋ฌธ์ œํ•ด๊ฒฐํ•˜๊ธฐ (2)
      • ๊ธฐํƒ€ (5)
    • โš›๏ธ React (49)
      • ๊ฐœ๋… (27)
      • ๊ฐœ๋…(Redux) (3)
      • ์ •๋ฆฌ (4)
      • ๋ฌธ์ œํ’€๊ธฐ (์ฝ”๋”ฉ์• ํ”Œ: React) (15)
    • ๐Ÿ“˜ TypeScript (10)
      • ๊ฐœ๋… (8)
      • ๋ฌธ์ œํ’€๊ธฐ (์ฝ”๋”ฉ์• ํ”Œ) (2)
    • ๐ŸŒ HTML,CSS (18)
      • ์‹ค๋ฌด์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋“ค (10)
      • ๋’ค๋Šฆ๊ฒŒ ์•Œ์•„์„œ ๋ผˆ์•„ํ”ˆ ์œ ์šฉํ•œ CSS (6)
      • ๊ธฐํƒ€ ์ž์ฃผ ์“ฐ๋Š” CSS (2)
    • ๐Ÿ’ป CS (8)
      • CS (5)
      • ์ •๊ทœํ‘œํ˜„์‹ (2)
      • Git,Github (1)

ํƒœ๊ทธ

  • TypeScript
  • axios
  • array
  • UXUI
  • ์‚ผํ•ญ์—ฐ์‚ฐ์ž
  • CS
  • react
  • class
  • ์ฝ”๋”ฉ์• ํ”Œ
  • JavaScript
  • json
  • redux
  • state
  • ์˜ค๋ฅ˜
  • Ajax
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • Props
  • useEffect
  • CSS
  • object
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
hELLO ยท Designed By ์ •์ƒ์šฐ.
Zoeeey

Stack flows in you

๐ŸŸจ JavaScript/๋ฌธ์ œํ’€๊ธฐ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์ฝ”๋”ฉ์• ํ”Œ)

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] PCCP ๊ธฐ์ถœ๋ฌธ์ œ 1๋ฒˆ : ๋ถ•๋Œ€ ๊ฐ๊ธฐ

2023. 12. 19. 16:01

์–ด๋–ค ๊ฒŒ์ž„์—๋Š” ๋ถ•๋Œ€ ๊ฐ๊ธฐ๋ผ๋Š” ๊ธฐ์ˆ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ•๋Œ€ ๊ฐ๊ธฐ๋Š” t์ดˆ ๋™์•ˆ ๋ถ•๋Œ€๋ฅผ ๊ฐ์œผ๋ฉด์„œ 1์ดˆ๋งˆ๋‹ค x๋งŒํผ์˜ ์ฒด๋ ฅ์„ ํšŒ๋ณตํ•ฉ๋‹ˆ๋‹ค. t์ดˆ ์—ฐ์†์œผ๋กœ ๋ถ•๋Œ€๋ฅผ ๊ฐ๋Š” ๋ฐ ์„ฑ๊ณตํ•œ๋‹ค๋ฉด y๋งŒํผ์˜ ์ฒด๋ ฅ์„ ์ถ”๊ฐ€๋กœ ํšŒ๋ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ์—๋Š” ์ตœ๋Œ€ ์ฒด๋ ฅ์ด ์กด์žฌํ•ด ํ˜„์žฌ ์ฒด๋ ฅ์ด ์ตœ๋Œ€ ์ฒด๋ ฅ๋ณด๋‹ค ์ปค์ง€๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์„ ์“ฐ๋Š” ๋„์ค‘ ๋ชฌ์Šคํ„ฐ์—๊ฒŒ ๊ณต๊ฒฉ์„ ๋‹นํ•˜๋ฉด ๊ธฐ์ˆ ์ด ์ทจ์†Œ๋˜๊ณ , ๊ณต๊ฒฉ์„ ๋‹นํ•˜๋Š” ์ˆœ๊ฐ„์—๋Š” ์ฒด๋ ฅ์„ ํšŒ๋ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ชฌ์Šคํ„ฐ์—๊ฒŒ ๊ณต๊ฒฉ๋‹นํ•ด ๊ธฐ์ˆ ์ด ์ทจ์†Œ๋‹นํ•˜๊ฑฐ๋‚˜ ๊ธฐ์ˆ ์ด ๋๋‚˜๋ฉด ๊ทธ ์ฆ‰์‹œ ๋ถ•๋Œ€ ๊ฐ๊ธฐ๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์—ฐ์† ์„ฑ๊ณต ์‹œ๊ฐ„์ด 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

๋ชฌ์Šคํ„ฐ์˜ ๊ณต๊ฒฉ์„ ๋ฐ›์œผ๋ฉด ์ •ํ•ด์ง„ ํ”ผํ•ด๋Ÿ‰๋งŒํผ ํ˜„์žฌ ์ฒด๋ ฅ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ์ด๋•Œ, ํ˜„์žฌ ์ฒด๋ ฅ์ด 0 ์ดํ•˜๊ฐ€ ๋˜๋ฉด ์บ๋ฆญํ„ฐ๊ฐ€ ์ฃฝ์œผ๋ฉฐ ๋” ์ด์ƒ ์ฒด๋ ฅ์„ ํšŒ๋ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋ถ•๋Œ€๊ฐ๊ธฐ ๊ธฐ์ˆ ์˜ ์ •๋ณด, ์บ๋ฆญํ„ฐ๊ฐ€ ๊ฐ€์ง„ ์ตœ๋Œ€ ์ฒด๋ ฅ๊ณผ ๋ชฌ์Šคํ„ฐ์˜ ๊ณต๊ฒฉ ํŒจํ„ด์ด ์ฃผ์–ด์งˆ ๋•Œ ์บ๋ฆญํ„ฐ๊ฐ€ ๋๊นŒ์ง€ ์ƒ์กดํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๋ถ•๋Œ€ ๊ฐ๊ธฐ ๊ธฐ์ˆ ์˜ ์‹œ์ „ ์‹œ๊ฐ„, 1์ดˆ๋‹น ํšŒ๋ณต๋Ÿ‰, ์ถ”๊ฐ€ ํšŒ๋ณต๋Ÿ‰์„ ๋‹ด์€ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด bandage์™€ ์ตœ๋Œ€ ์ฒด๋ ฅ์„ ์˜๋ฏธํ•˜๋Š” ์ •์ˆ˜ health, ๋ชฌ์Šคํ„ฐ์˜ ๊ณต๊ฒฉ ์‹œ๊ฐ„๊ณผ ํ”ผํ•ด๋Ÿ‰์„ ๋‹ด์€ 2์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด attacks๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ณต๊ฒฉ์ด ๋๋‚œ ์งํ›„ ๋‚จ์€ ์ฒด๋ ฅ์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ๋งŒ์•ฝ ๋ชฌ์Šคํ„ฐ์˜ ๊ณต๊ฒฉ์„ ๋ฐ›๊ณ  ์บ๋ฆญํ„ฐ์˜ ์ฒด๋ ฅ์ด 0 ์ดํ•˜๊ฐ€ ๋˜์–ด ์ฃฝ๋Š”๋‹ค๋ฉด -1์„ return ํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ

  • bandage๋Š” [์‹œ์ „ ์‹œ๊ฐ„, ์ดˆ๋‹น ํšŒ๋ณต๋Ÿ‰, ์ถ”๊ฐ€ ํšŒ๋ณต๋Ÿ‰] ํ˜•ํƒœ์˜ ๊ธธ์ด๊ฐ€ 3์ธ ์ •์ˆ˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
    • 1 ≤ ์‹œ์ „ ์‹œ๊ฐ„ = t ≤ 50
    • 1 ≤ ์ดˆ๋‹น ํšŒ๋ณต๋Ÿ‰ = x ≤ 100
    • 1 ≤ ์ถ”๊ฐ€ ํšŒ๋ณต๋Ÿ‰ = y ≤ 100
  • 1 ≤ health ≤ 1,000
  • 1 ≤ attacks์˜ ๊ธธ์ด ≤ 100
    • attacks[i]๋Š” [๊ณต๊ฒฉ ์‹œ๊ฐ„, ํ”ผํ•ด๋Ÿ‰] ํ˜•ํƒœ์˜ ๊ธธ์ด๊ฐ€ 2์ธ ์ •์ˆ˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
    • attacks๋Š” ๊ณต๊ฒฉ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
    • attacks์˜ ๊ณต๊ฒฉ ์‹œ๊ฐ„์€ ๋ชจ๋‘ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
    • 1 ≤ ๊ณต๊ฒฉ ์‹œ๊ฐ„ ≤ 1,000
    • 1 ≤ ํ”ผํ•ด๋Ÿ‰ ≤ 100

๋‚˜์˜ ํ’€์ด

function solution(bandage, health, attacks) {
  // t์ดˆ : ๋ถ•๋Œ€๊ฐ๋Š” ์‹œ๊ฐ„
  // x : 1์ดˆ๋งˆ๋‹ค ํšŒ๋ณตํ•˜๋Š” ์ฒด๋ ฅ๋Ÿ‰
  // y : t์ดˆ ์—ฐ์† ๋ถ•๋Œ€๊ฐ๊ธฐ ์„ฑ๊ณต ์‹œ ์ถ”๊ฐ€ ํšŒ๋ณตํ•˜๋Š” ์ฒด๋ ฅ๋Ÿ‰
  // bandage : [๊ธฐ์ˆ ์‹œ์ „์‹œ๊ฐ„, 1์ดˆ๋‹น ํšŒ๋ณต๋Ÿ‰(x), ์ถ”๊ฐ€ํšŒ๋ณต๋Ÿ‰(y)]
  // health : ์ตœ๋Œ€์ฒด๋ ฅ
  // attacks : [๋ชฌ์Šคํ„ฐ๊ณต๊ฒฉ์‹œ๊ฐ„, ํ”ผํ•ด๋Ÿ‰]

  // ** ์ฒด๋ ฅ์€ ์ตœ๋Œ€ ์ฒด๋ ฅ์„ ๋„˜๊ธธ ์ˆ˜ ์—†๋‹ค.
  // ** ์ฒด๋ ฅ์ด 0 ์ดํ•˜๊ฐ€ ๋˜๋ฉด ์บ๋ฆญํ„ฐ ์‚ฌ๋ง, ๋”์ด์ƒ ์ฒด๋ ฅํšŒ๋ณต ๋ถˆ๊ฐ€๋Šฅ
  // ** ๊ณต๊ฒฉ์„ ๋ฐ›์œผ๋ฉด ํ”ผํ•ด๋Ÿ‰๋งŒํผ ์ฒด๋ ฅ์ด ์ค„์–ด๋“ ๋‹ค.

  // ** ๊ธฐ์ˆ ์„ ์“ฐ๋Š” ๋„์ค‘ ๊ณต๊ฒฉ์„ ๋‹นํ•˜๋ฉด ์ทจ์†Œ๋œ๋‹ค. ๊ณต๊ฒฉ์„ ๋‹นํ•˜๋Š” ์ค‘์—๋Š” ๊ธฐ์ˆ ์„ ์“ธ ์ˆ˜ ์—†๋‹ค.
  // ** ๊ธฐ์ˆ ์„ ์“ฐ๋Š” ๋„์ค‘ ๊ณต๊ฒฉ์„ ๋‹นํ•ด ์ทจ์†Œ/๊ธฐ์ˆ ์ด ๋๋‚˜๋ฉด ์ฆ‰์‹œ ๋‹ค์‹œ ๊ธฐ์ˆ ์„ ์“ด๋‹ค. (์—ฐ์† ์„ฑ๊ณต ์‹œ๊ฐ„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”)
  
  // return ๋ชจ๋“  ๊ณต๊ฒฉ์ด ๋๋‚œ ์งํ›„ ๋‚จ์€ ์ฒด๋ ฅ (์‚ฌ๋ง์‹œ -1)

  let lastTime = attacks[attacks.length -1][0]; // ๋งˆ์ง€๋ง‰๊ณต๊ฒฉ๊นŒ์ง€์˜ ์ด ์‹œ๊ฐ„
  let attackTime = attacks.map((att) => att[0]); // ๊ณต๊ฒฉํ•˜๋Š” ์‹œ๊ฐ„ array
  let nowHealth = health; // ํ˜„์žฌ์ฒด๋ ฅ
  let bandageTime =  0; // ๊ธฐ์ˆ ์‹œ์ „ํšŸ์ˆ˜

  for(let time = 0; time <= lastTime; time++){
    console.log("\n", time, "์ดˆ");

    let attackedInfo = attacks.find((attack) => attack[0] === time); // ์ด๋ฒˆ ์‹œ๊ฐ„(์ดˆ)์˜ ๊ณต๊ฒฉ์ •๋ณด
    const doBandage = function() { // ํšŒ๋ณต๊ธฐ์ˆ  ํ•จ์ˆ˜
      if(attackTime.some((attTime) => attTime === time)){
        bandageTime = 0;
      } else {
        bandageTime++;

        nowHealth = nowHealth + bandage[1];
        if(nowHealth > health){
          nowHealth = health;
        }
        console.log(`๊ธฐ์ˆ ์‹œ์ „ ${bandageTime}ํšŒ์งธ, ${bandage[1]} ๋งŒํผ ํšŒ๋ณตํ–ˆ๋‹ค! ํ˜„์žฌ ์ฒด๋ ฅ์€ ${nowHealth}.`);

        if(bandageTime === bandage[0]){
          nowHealth = nowHealth + bandage[2];
          bandageTime = 0;
          if(nowHealth > health){
            nowHealth = health;
          }
          console.log(`์—ฐ์† ๋ถ•๋Œ€๊ฐ๊ธฐ ์„ฑ๊ณต, ${bandage[2]} ๋งŒํผ ์ถ”๊ฐ€ ํšŒ๋ณตํ–ˆ๋‹ค! ํ˜„์žฌ ์ฒด๋ ฅ์€ ${nowHealth}.`);
        }
      }
    }
    doBandage();
    // ๊ณต๊ฒฉ
    if(attackedInfo !== undefined){
      if(time === attackedInfo[0]){
        nowHealth = nowHealth - attackedInfo[1];
        console.log(`${attackedInfo[1]} ๋งŒํผ ๊ณต๊ฒฉ๋ฐ›์•˜๋‹ค! ํ˜„์žฌ ์ฒด๋ ฅ์€ ${nowHealth}.`);
        if(nowHealth <= 0){
          console.log(`ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์‚ฌ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.`);
          return -1;
        }
      }
    }
  }

  if(nowHealth <= 0){ return -1 }
  return nowHealth;
}

๋‚˜์ค‘์— ๋ณผ ๋•Œ๋ฅผ ๋Œ€๋น„ํ•ด ์ฝ˜์†”๊ณผ ์ฃผ์„์„ ํฌํ•จํ•œ ํ’€์ด๋กœ ์ €์žฅํ•ด๋‘”๋‹ค.


์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://school.programmers.co.kr/learn/challenges

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐ŸŸจ JavaScript > ๋ฌธ์ œํ’€๊ธฐ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์ฝ”๋”ฉ์• ํ”Œ)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] 2022 KAKAO BLIND RECRUITMENT : ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ  (1) 2023.12.11
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] ๋‹ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ  (0) 2023.12.10
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] ๋ฐ”ํƒ•ํ™”๋ฉด ์ •๋ฆฌ  (0) 2023.12.10
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] ์ถ”์–ต ์ ์ˆ˜  (0) 2023.12.10
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] ์‚ผ์ด์‚ฌ  (0) 2023.12.10
    '๐ŸŸจ JavaScript/๋ฌธ์ œํ’€๊ธฐ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์ฝ”๋”ฉ์• ํ”Œ)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] 2022 KAKAO BLIND RECRUITMENT : ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] ๋‹ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] ๋ฐ”ํƒ•ํ™”๋ฉด ์ •๋ฆฌ
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level 1] ์ถ”์–ต ์ ์ˆ˜
    Zoeeey
    Zoeeey
    ๊ธธ๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ์งง๊ฒŒ ๊ทธ๋ฆฌ๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”