2021-12-09 TIL

λ””μ•„Β·2021λ…„ 12μ›” 9일
1

멋사FE슀쿨1κΈ°

λͺ©λ‘ 보기
18/20
post-thumbnail

🦁 Day30

πŸ’» 였늘 ν•œ 것

μ‚¬μš©μžμ—κ²Œ 숫자λ₯Ό μž…λ ₯λ°›μ•„ μž…λ ₯받은 κ°’λ§ŒνΌμ˜ 라인으둜 트리 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨ κ΅¬ν˜„

문제

[μž…λ ₯]
5
[좜λ ₯]
    *
   ***
  *****
 *******
*********

β›” 처음 μž‘μ„±ν•œ μ½”λ“œ(였λ₯˜ζœ‰)

// μ‚¬μš©μžμ—κ²Œ κ°’ μž…λ ₯ λ°›κΈ°
do {
    let flag = false;
    const userInput = prompt('숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”');
    const input = parseInt(userInput);
    if(input < 1 || isNaN(input)){
        alert('1 μ΄μƒμ˜ μ •μˆ˜λ§Œ μž…λ ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.');
    } else {
        flag = true;
    }
} while(!flag)

let n = 0;
let result = '';
for(let i=1; i < input+1; i++){ // 라인 수
    for(let j=input; j > i; j--){ // 곡백 수
        result += ' ';
    }
    if(i === 1){
        result += '*'+'\n';
    } else {
        for(let k=0; k<i+n+1; k++){
            result += '*';
        }
        result += '\n';
        n++;
    }
}
console.log(result);

맞λ‹₯뜨린 문제점

μ˜ˆμ™Έ 처리 이후 κ°’ μž¬μž…λ ₯해도 κ²°κ³Όλ¬Ό 좜λ ₯ν•˜μ§€ μ•Šκ³  ν”„λ‘œκ·Έλž¨ μ’…λ£Œλ˜λŠ” 였λ₯˜

do..while문을 μ΄μš©ν•΄ μ‚¬μš©μžκ°€ μ˜¬λ°”λ₯Έ 값을 μž…λ ₯ν•  λ•ŒκΉŒμ§€ λ°˜λ³΅ν•˜λ„λ‘ ν–ˆλ‹€.
일단 do..while문에 λ“€μ–΄κ°€λ©΄ prompt() ν•¨μˆ˜λ‘œ 값을 μž…λ ₯받은 ν›„ μ˜¬λ°”λ₯Έ 값을 μž…λ ₯ν•˜μ§€ μ•Šμ€ κ²½μš°μ— λŒ€ν•œ μ˜ˆμ™Έμ²˜λ¦¬μ— λ“€μ–΄κ°„λ‹€.

if(input < 1 || isNaN(input)){
        alert('1 μ΄μƒμ˜ μ •μˆ˜λ§Œ μž…λ ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.');
    } else {
        flag = true;
    }

그런데 μ˜¬λ°”λ₯Έ 값을 μž…λ ₯해도 ν”„λ‘œκ·Έλž¨ μ’…λ£Œ, μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ 값을 μž…λ ₯해도 alertμ°½ 뜨고 확인 λˆ„λ₯΄λ©΄ κ±°κΈ°μ„œ μ’…λ£Œλλ‹€.



μˆ˜μ‹­λ²ˆμ˜ console.log 와 μ½”λ“œμ‹€ν–‰μˆœμ„œλ₯Ό λ˜μ§šμ–΄ λ³Έ ν›„ μœ νš¨μ„± μ²΄ν¬μ—μ„œ κ±Έλ €μ„œ prompt()둜 λ‹€μ‹œ μž…λ ₯받은 값을 userInput λ³€μˆ˜μ— λ‹€μ‹œ λ‹΄μ•„μ£ΌλŠ” 것을 λΉΌλ¨Ήμ—ˆλ‹€λŠ” κ±Έ κΉ¨λ‹¬μ•˜λ‹€πŸ€¦β€β™€οΈ

if (input < 1 || isNaN(input)) {
  // λ‹€μ‹œ μž…λ ₯λ°›λŠ” κ°’ userInput λ³€μˆ˜μ— ν• λ‹Ή
  userInput = prompt('1 μ΄μƒμ˜ 숫자만 μž…λ ₯ν•˜μ„Έμš”');
} else {
  flag = true;
}

μΆ”κ°€ν•œ 것

μ‚¬μš©μžκ°€ 값을 μž…λ ₯ν•˜μ§€ μ•Šκ³  μ·¨μ†Œν•  μˆ˜λ„ μžˆμœΌλ―€λ‘œ prompt()μ—μ„œ μ·¨μ†Œλ₯Ό λˆŒλ €μ„ λ•Œ ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ˜λ„λ‘ ν–ˆλ‹€

  if(userInput){ // μž…λ ₯값이 μžˆλŠ” 경우
    if (input < 1 || isNaN(input)) { // 1 이상이 μ•„λ‹Œ, 숫자 μ΄μ™Έμ˜ κ°’ μž…λ ₯ν•œ 경우
      userInput = prompt('1 μ΄μƒμ˜ 숫자만 μž…λ ₯ν•˜μ„Έμš”');
    } else { // 1 μ΄μƒμ˜ 숫자 μž…λ ₯ν•œ 경우
      flag = true;
    }
  } else { // 값을 μž…λ ₯ν•˜μ§€ μ•Šκ³  μ·¨μ†Œ λ²„νŠΌμ„ λˆ„λ₯Έ 경우
    alert('ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€');
    flag = true;
  }

μ΅œμ’… μ½”λ“œ

// μ‚¬μš©μžμ—κ²Œ 숫자 μž…λ ₯ λ°›κΈ°
let flag = false;
let input;
let userInput = prompt('숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”');
do {
    input = parseInt(userInput);
    if(userInput){
      if (input < 1 || isNaN(input)) {
        userInput = prompt('1 μ΄μƒμ˜ 숫자만 μž…λ ₯ν•˜μ„Έμš”');
      } else {
        flag = true;
      }
    } else {
      alert('ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€');
      flag = true;
    }
} while (!flag)

// μž…λ ₯받은 κ°’μœΌλ‘œ 트리 λ§Œλ“€κΈ°
let n = 0;
let result = '';
for(let i=1; i < input+1; i++){ // 라인 수
    for(let j=input; j > i; j--){ // 곡백 수
        result += ' ';
    }
    if(i === 1){
        result += '*'+'\n';
    } else {
        for(let k=0; k<i+n+1; k++){
            result += '*';
        }
        result += '\n';
        n++;
    }
}
console.log(result);

β–Ά κ²°κ³Όλ¬Ό ν™•μΈν•˜κΈ°(트리 λ§Œλ“€κΈ°)

πŸ’­ λŠλ‚€ 점

λ³„μ°κΈ°λŠ” μ•Œκ³ λ¦¬μ¦˜ 문제 μ€‘μ˜ 기초 μ€‘μ˜ κΈ°μ΄ˆμΈλ°λ„ λ‚˜μ—κ²ŒλŠ” κ½€λ‚˜ μ–΄λ €μš΄ λ¬Έμ œμ˜€λ‹€. ν•˜μ§€λ§Œ κ·Έλƒ₯ μˆ˜λ™μ μœΌλ‘œ μˆ˜μ—…λ§Œ λ“£λŠ” 것보닀 μ΄λ ‡κ²Œ κ°„λ‹¨ν•˜κ²ŒλΌλ„ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ–΄λ³΄λ©΄μ„œ μ‹œν–‰μ°©μ˜€λ„ κ²ͺκ³  였λ₯˜ μˆ˜μ •ν•΄ λ‚˜κ°€λ©΄μ„œ λ°°μš°λŠ” 것이 κ½€ λ§Žμ•˜λ‹€. 이둠,문법을 μ–΄λŠμ •λ„ 배우고 λ‚œ ν›„μ—λŠ” μ΄λ ‡κ²Œ κ°„λ‹¨ν•œ ν”„λ‘œκ·Έλž¨ λ§Œλ“€κΈ°λ₯Ό κΌ­ ν•΄μ•Όκ² λ‹€λŠ” 생각이 많이 λ“€μ—ˆλ‹€.

profile
μ–Όλ ˆλ²Œλ ˆ ν”„λ‘ νŠΈμ—”λ“œ 개발자

3개의 λŒ“κΈ€

comment-user-thumbnail
2021λ…„ 12μ›” 9일

였 별찍기λ₯Ό μ—΄μ‹¬νžˆ ν•˜μ‹œλ”λ‹ˆ μ΄λ ‡κ²Œ 멋진 TILκΉŒμ§€ μž‘μ„±ν•˜κ²Œ λ˜μ…¨κ΅°μš”!! 쀑간에 μ™œμ§€κ°μž λ„ˆλ¬΄ μ›ƒκ²Όμ–΄μš” πŸ˜ŽπŸ‘ μˆ˜μ—…λ§κ³ λ„ μ΄λ ‡κ²Œ 개인 ν•™μŠ΅μ„ ν•˜λŠ” 것도 λ¬Όλ‘  μ€‘μš”ν•˜λ‹€λŠ” 것을 μ•Œκ³  μžˆμ§€λ§Œ, μ™œ μ΄λ ‡κ²Œ μ‹€μ²œν•˜λŠ”κ²Œ μ–΄λ €μšΈκΉŒμš”γ…  μˆ˜μ—…μ„ μ•ˆλ”°λΌκ°€μžλ‹ˆ λΆˆμ•ˆν•˜κ³  κ·Έλ ‡λ‹€κ³  μ—„μ²­ 머릿속에 남지도 μ•Šμ•„μ„œ 쑰금 걱정이 λ©λ‹ˆλ‹€πŸ˜°..

1개의 λ‹΅κΈ€