πŸ“ μ•Œκ³ λ¦¬μ¦˜/λ°±μ€€

[λ°±μ€€] 17478번: μž¬κ·€ν•¨μˆ˜κ°€ λ­”κ°€μš”? (Node.js)

JaeBBang 2024. 9. 3. 15:52

 

접근방식

λ°˜λ³΅λ˜λŠ” 글귀에 λ°˜λ³΅λ˜λŠ” κ°’"____"을 μΆ”κ°€λ‘œ ν•˜λ©΄μ„œ 좜λ ₯을 ν•˜λŠ” 것을 봀을 λ•Œ 문제의 제λͺ©κ³Όλ„ 같이

μž¬κ·€ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ ν’€λΌλŠ” 것 κ°™λ‹€!

 

μž¬κ·€ν•¨μˆ˜λž€?

ν•¨μˆ˜ μ•ˆμ—μ„œ μžκΈ°μžμ‹ μ„ λ‹€μ‹œ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.
κ³„μ†ν•΄μ„œ μžκΈ°μžμ‹ μ„ ν˜ΈμΆœν•˜λ©΄μ„œ μ•Œλ§žμ€ 쑰건을 λ§Œλ‚˜λ©΄ ν•¨μˆ˜λ₯Ό λΉ μ Έλ‚˜κ°€λŠ” λ‘œμ§μ„ μˆ˜ν–‰ν•˜κ³€ ν•©λ‹ˆλ‹€.

 

 

풀이 ⏰

const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = [];

rl.on("line", function (line) {
  input.push(Number(line));
}).on("close", function () {
  // μž…λ ₯된 κ°’
  let num = input[0];
  // ν˜„μž¬κ°’μ΄λ©΄ μž¬κ·€λ₯Ό 톡해 +될 κ°’
  let curNum = 0;
  // κΈ€
  let story = "";
  // ____
  let underline = "";
  console.log("μ–΄λŠ ν•œ 컴퓨터곡학과 학생이 유λͺ…ν•œ κ΅μˆ˜λ‹˜μ„ μ°Ύμ•„κ°€ λ¬Όμ—ˆλ‹€.");
  const recursive = (line, num, curNum) => {
    if (num > curNum) {
      // 처음 μΆ”κ°€λœ line은 λΉˆκ°’μ΄λ©° 이후 좔가될 κ°’μ—λŠ” "____"κ°€ μΆ”κ°€λ‘œ λΆ™μŒ
      story += `${line}"μž¬κ·€ν•¨μˆ˜κ°€ λ­”κ°€μš”?"\n`;
      story += `${line}"잘 λ“€μ–΄λ³΄κ²Œ. μ˜›λ‚ μ˜›λ‚  ν•œ μ‚° κΌ­λŒ€κΈ°μ— 이세상 λͺ¨λ“  지식을 ν†΅λ‹¬ν•œ 선인이 μžˆμ—ˆμ–΄.\n`;
      story += `${line}λ§ˆμ„ μ‚¬λžŒλ“€μ€ λͺ¨λ‘ κ·Έ μ„ μΈμ—κ²Œ μˆ˜λ§Žμ€ μ§ˆλ¬Έμ„ ν–ˆκ³ , λͺ¨λ‘ μ§€ν˜œλ‘­κ²Œ λŒ€λ‹΅ν•΄ μ£Όμ—ˆμ§€.\n`;
      story += `${line}그의 닡은 λŒ€λΆ€λΆ„ μ˜³μ•˜λ‹€κ³  ν•˜λ„€. 그런데 μ–΄λŠ λ‚ , κ·Έ μ„ μΈμ—κ²Œ ν•œ μ„ λΉ„κ°€ μ°Ύμ•„μ™€μ„œ λ¬Όμ—ˆμ–΄."\n`;
      // num(μž…λ ₯κ°’)이 λ§Œμ•½ 4이면, 0 1 2 3 κΉŒμ§€ 돌 수 있게 값을 ν‚€μ›Œμ€Œ
      curNum++;
      recursive(line + "____", num, curNum);
    } else {
      // curNum이 4κ°€ 되면 마무리멘트둜 λ³€κ²½ 
      story += `${line}"μž¬κ·€ν•¨μˆ˜κ°€ λ­”κ°€μš”?"\n`;
      story += `${line}"μž¬κ·€ν•¨μˆ˜λŠ” 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜λΌλ„€"\n`;
    }
    story += `${line}라고 λ‹΅λ³€ν•˜μ˜€μ§€.\n`;
  };
  recursive(underline, num, curNum);
  console.log(story);
});

 

μž¬κ·€ν•¨μˆ˜λŠ” ν˜„μ—…μ—μ„œ 쑰직도λ₯Ό ꡬ성할 λ–„ 자주 μ‚¬μš©ν–ˆλ˜ ν•¨μˆ˜μ—¬μ„œ κ·ΈλŸ°μ§€ λ‚˜λ¦„ μ‰½κ²Œ ν’€ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

 


ν˜Ήμ‹œλͺ¨λ₯Ό 도움말이 ν•„μš”ν•  μˆ˜λ„ μžˆμœΌλ‹ˆ... κΈ°μ‘΄μ½”λ“œλ‘œ κ°„λ‹¨ν•˜κ²Œ μž¬κ·€ν•¨μˆ˜μ— λŒ€ν•΄μ„œ μž‘μ„±μ„ ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

ν•¨μˆ˜ μ•ˆμ—μ„œ ν•¨μˆ˜λ₯Ό μž¬ν˜ΈμΆœν•˜λŠ” κ±Έ 눈으둜 λ³΄μ‹œλ©΄ 훨씬 더 이해가 λΉ λ₯Ό 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€!

 

let num = input[0];
  let curNum = 0;
  let story = "";
  let underline = "";
  console.log("μ–΄λŠ ν•œ 컴퓨터곡학과 학생이 유λͺ…ν•œ κ΅μˆ˜λ‹˜μ„ μ°Ύμ•„κ°€ λ¬Όμ—ˆλ‹€.");
  const recursive = (line, num, curNum) => {
    if (num > curNum) {
      story += `${line}"μž¬κ·€ν•¨μˆ˜κ°€ λ­”κ°€μš”?"\n`;
      curNum++;
      recursive(line + "____", num, curNum);
      // ν•¨μˆ˜μ•ˆμ— ν•¨μˆ˜κ°€ μžˆλ‹€κ³  생각!
      // const recursive = (line, num, curNum) => {
        // if (num > curNum) {
          // story += `${line}"μž¬κ·€ν•¨μˆ˜κ°€ λ­”κ°€μš”?"\n`;
          // curNum++;
          // recursive(line + "____", num, curNum);
        // } else {
          // story += `${line}"μž¬κ·€ν•¨μˆ˜λŠ” 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜λΌλ„€"\n`;
        // }
        // story += `${line}라고 λ‹΅λ³€ν•˜μ˜€μ§€.\n`;
      // };
    } else {
      story += `${line}"μž¬κ·€ν•¨μˆ˜λŠ” 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜λΌλ„€"\n`;
    }
    story += `${line}라고 λ‹΅λ³€ν•˜μ˜€μ§€.\n`;
  };
  recursive(underline, num, curNum);
  console.log(story);

 

λ°±μ€€ 17478번 링크

πŸ‘‰ https://www.acmicpc.net/problem/17478