[Clean code] 1~10 출력 면접 코테 #2

Onam Kwon·2022년 11월 18일
1

1에서 10까지 출력하기

// 안내
// 주석 아래에 요구사항에 맞는 코드를 작성해주세요.

/** 
 * 요구사항
 * 1. 1부터 10까지 순회하면서 숫자를 출력하세요.
 * 2. 3, 4, 7 에서는 숫자와 함께 "Hello, world!"를 출력하세요.
 * 3. 7에서는 "Hello, world!" 대신 "Bye, world!"가 출력되도록 수정하세요.
 * 4. 4에서는 숫자가 출력되지 않게 수정하세요.
*/
// 코드 작성
for(let i=1;i<11;i++) {
  if(i==3) {
	console.log("Hello, world! ", i);
  } else if(i==4) {
	continue;
  } else if(i==7) {
    console.log("Hello, world! ", i);
  } else {
	console.log(i);
  }
}
  • 위의 코드를 더 깔끔하게 개선한 코드는 이 게시글의 1편에서는 아래와 같이 끝났었다.
// 안내
// 주석 아래에 요구사항에 맞는 코드를 작성해주세요.
/** 
 * 요구사항
 * 1. 1부터 10까지 순회하면서 숫자를 출력하세요.
 * 2. 3, 4, 7 에서는 숫자와 함께 "Hello, world!"를 출력하세요.
 * 3. 7에서는 "Hello, world!" 대신 "Bye, world!"가 출력되도록 수정하세요.
 * 4. 4에서는 숫자가 출력되지 않게 수정하세요.
*/
// 코드 작성

const caseMap = {
    3: "Hello World, 3!",
    4: "",
    7: "Bye, World!"
}

function printGreetingMessage(caseNumber) {
    if(caseMap[caseNumber]===undefined) {
        console.log(caseNumber);
    } else {
        console.log(caseMap[caseNumber]);
    }
}

for(let i=1;i<11;i++) {
    printGreetingMessage(i);
}
  • 뭔가 아쉬움이 남은채로 끝났었지만 우연히 더 좋은 방법을 알게되어 다시 한번 포스팅한다.
const caseMap = {
    3: "Hello World, 3!",
    4: "",
    7: "Bye, World!"
}

function printGreetingMessage(caseNumber) {
	caseMap[caseNumber] ??= caseNumber;
	console.log(caseMap[caseNumber]);
}

for(let i=1;i<11;i++) {
    printGreetingMessage(i);
}
  • 이런식으로 하면 caseMap[caseNumber]값이 없다면 caseNumber값으로 초기화 해준다.
    • 그 후 그 값을 출력해 주는 방식.
  • 코드를 간략히 만들다 보니 아래처럼 만들수도 있었다.
    • for문에서 일부러 다시 console.log()문을 사용한 이유는 printGreetingMessage()함수가 값도 설정하고 출력도 동시에 하길래 한가지 임무만 부여해 주려고 나눠봤는데 뭐가 맞는진 솔직히 잘 모른다.
    • 역할을 확실히 하기 위해 printGreetingMessage()함수를 getGreetingMessage()함수로 바꾼 후 그 값을 외부에서 console.log()함수를 이용해 출력해 주었다.
const caseMap = {
    3: "Hello World, 3!",
    4: "",
    7: "Bye, World!"
}

function getGreetingMessage(caseNumber) {
	return caseMap[caseNumber] ??= caseNumber;
}

for(let i=1;i<11;i++) {
    console.log(getGreetingMessage(i));
}
  • 결과는 여전히 기존과 동일하다.
1
2
Hello World, 3!
Hello World!
5
6
Bye, World!
8
9
10
  • 지금 글을 쓰면서 보니까 이렇게 한게 훨씬 깔끔해 보인다.
profile
권오남 / Onam Kwon

0개의 댓글