미새문지

24.06.25 day9 코드트리 문제 풀기, falsy values 본문

개발 TIL

24.06.25 day9 코드트리 문제 풀기, falsy values

문미새 2024. 6. 25. 23:29
728x90

두 개의 직각삼각형

정수 n이 주어졌을 때, 아래 예를 참고하여 * 로 이루어진 직각삼각형 대칭으로 2 개 출력하는 프로그램을 작성해보세요.

예) n = 4일 때

********
***   ***
**      **
*        *

 

a = int(input())

for i in range(a):
    for j in range(a, i, -1):
        print('*', end='')
    if i > 0:
        for k in range(i):
            print(' ', end='')

    if i > 0:
        for k in range(i):
            print(' ', end='')
    for j in range(a, i, -1):
        print('*', end='')

    print()

공백을 포함해서 하나의 직사각형을 만든 후에 만든 직사각형을 두 개 붙인다고 생각하면 편하다.


별 그리기

가로 세로 2n-1 크기에 해당하는 격자에 다이아몬드 모양을 *로 그리는 코드를 작성해보세요.

규칙은 다음과 같습니다.

n = 2
 *
***
 *

n = 3
  *
 ***
*****
 ***
  *

 

a = int(input())

for i in range(a*2-1):
    if i < a:
        star = 2 * i + 1
    else:
        star = 2 * (a*2-1 - i - 1) + 1
    space = (a*2-1 - star) // 2
    print(' ' * space + '*' * star + ' ' * space)

처음에 별 그리기 할 때는 공백과 별을 일일히 for문으로 나눠서 작성했는데, 한 문장으로 압축시키는 것도 괜찮은 것 같다. 그런데 이렇게 하니까 코드만 볼 때는 좀 헷갈린다.


falsy values

자바스크립트에서 조건문이나 boolean context에서 false로 평가되는 값이며 실제로는 false가 아니지만 false로 간주된다.

 

falsy values의 종류

  • null: 값이 없음을 명시적으로 나타내는 값.
  • undefined: 선언된 변수에 값이 할당되지 않았을 때 자동으로 할당되는 값.
  • undeclared: 선언되지 않은 변수를 참조할 때 발생하는 상태.
  • NaN: Not-a-Number, 숫자가 아닌 값을 숫자로 변환하려 할 때 또는 유효하지 않은 숫자 연산 결과로 발생하는 값.

falsy values 예시

  • null
let obj = null;
console.log(obj); // null

 

  • undefined
let a;
console.log(a); // undefined

function foo() {}
console.log(foo()); // undefined

 

 

  • undeclared
try {
  console.log(b); // ReferenceError: b is not defined
} catch (e) {
  console.error(e);
}

 

  • NaN
let result = "abc" / 2;
console.log(result); // NaN

console.log(NaN === NaN); // false

// NaN을 확인하는 방법
console.log(Number.isNaN(result)); // true

 

falsy values는 변수나 함수가 호이스팅되거나, 타입에 맞는 값이 들어오지 않았을 때 자주 발생한다.

728x90