1에서 10까지 출력하기
- 온라인으로 화상 면접을 하던 도중 코딩 테스트를 하자고 하셔서 했던적 있다.
- 간단한 문제니 5분안에 끝난다고 하셨음.
- 요구사항은 다음과 같다.
- 1부터 10까지 순회하면서 숫자를 출력하세요.
- NodeJS백엔드 면접이었기 때문에 사용 언어는 Javascript.
for(let i=1;i<11;i++) {
console.log(i);
}
- 이어서 이 코드에 추가로 요구사항이 생겼다.
- 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!"가 출력되도록 수정하세요.
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);
}
}
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
- 테스트를 할 당시에도 맵을 사용하면 더 깔끔한 결과가 나올것이라 생각은 했었지만 어떻게 해야할지 몰랐다.
- 지금 생각나서 만들어본 코드는 아래와 같다.
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 등 여러개의 같은 추가 옵션이 생길경우 한번에 어떻게 할 방법도 있을거같은데 아직은 모르겠다.