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

Onam Kwon·2022년 11월 16일
1

1에서 10까지 출력하기

  • 온라인으로 화상 면접을 하던 도중 코딩 테스트를 하자고 하셔서 했던적 있다.
  • 간단한 문제니 5분안에 끝난다고 하셨음.
  • 요구사항은 다음과 같다.
    • 1부터 10까지 순회하면서 숫자를 출력하세요.
  • NodeJS백엔드 면접이었기 때문에 사용 언어는 Javascript.
// 안내
// 주석 아래에 요구사항에 맞는 코드를 작성해주세요.

/** 
 * 요구사항
 * 1. 1부터 10까지 순회하면서 숫자를 출력하세요.
*/
// 코드 작성
for(let i=1;i<11;i++) {
  console.log(i);
}
  • 위와 같은 형식으로 짤 수 있다.
  • 이어서 이 코드에 추가로 요구사항이 생겼다.
    • 3, 4, 7 에서는 숫자와 함께 "Hello, world!"를 출력하세요.
// 안내
// 주석 아래에 요구사항에 맞는 코드를 작성해주세요.

/** 
 * 요구사항
 * 1. 1부터 10까지 순회하면서 숫자를 출력하세요.
 * 2. 3, 4, 7 에서는 숫자와 함께 "Hello, world!"를 출력하세요.
*/
// 코드 작성
for(let i=1;i<11;i++) {
  if(i==3 || i==4 || i==7) {
    console.log("Hello, world! ", i);
  } else {
	console.log(i);
  }
}
  • 또다시 새로운 요구사항이 들어왔다.
    • 7에서는 "Hello, world!" 대신 "Bye, world!"가 출력되도록 수정하세요.
// 안내
// 주석 아래에 요구사항에 맞는 코드를 작성해주세요.

/** 
 * 요구사항
 * 1. 1부터 10까지 순회하면서 숫자를 출력하세요.
 * 2. 3, 4, 7 에서는 숫자와 함께 "Hello, world!"를 출력하세요.
 * 3. 7에서는 "Hello, world!" 대신 "Bye, world!"가 출력되도록 수정하세요.
*/
// 코드 작성
for(let i=1;i<11;i++) {
  if(i==3 || i==4) {
	console.log("Hello, world! ", i);
  } else if(i==7) {
    console.log("Hello, world! ", i);
  } else {
	console.log(i);
  }
}
  • 그리고 마지막 요구사항.
    • 4에서는 숫자가 출력되지 않게 수정하세요.
// 안내
// 주석 아래에 요구사항에 맞는 코드를 작성해주세요.

/** 
 * 요구사항
 * 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);
  }
}
  • 구현은 다 했었지만 형편없다.
  • 코드가 지저분하다.

Better code

  • 테스트를 할 당시에도 맵을 사용하면 더 깔끔한 결과가 나올것이라 생각은 했었지만 어떻게 해야할지 몰랐다.
  • 지금 생각나서 만들어본 코드는 아래와 같다.
// 안내
// 주석 아래에 요구사항에 맞는 코드를 작성해주세요.
/** 
 * 요구사항
 * 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);
}
  • 맵에 특정 옵션별 출력값을 따로 저장해 출력해주며, 따로 저장한 값이 없을경우 기본값인 숫자만 출력한다.
  • 위 코드의 결과는 아래와 같다.
1
2
Hello World, 3!
Hello World!
5
6
Bye, World!
8
9
10
  • 3,4,7 등 여러개의 같은 추가 옵션이 생길경우 한번에 어떻게 할 방법도 있을거같은데 아직은 모르겠다.
profile
권오남 / Onam Kwon

0개의 댓글