1번. FizzBuzz
- 1부터 100까지 console.log를 실행한다.
- 3의 배수는 "fizz"라는 문자열을 로그한다.
- 5의 배수는 "buzz"라는 문자열을 로그한다.
- 3과 5의 공배수는 "fizzbuzz"라는 문자열을 로그한다.
- 나머지 숫자들은 해당 숫자 자체를 로그한다.
for ( var i = 1; i < 101; i++) {
if ((i%15) === 0) {
console.log("fizzbuzz", "i의 값 : " + i);
} else if ((i%3) === 0) {
console.log("fizz", "i의 값 : " + i);
} else if ((i%5) === 0) {
console.log("buzz", "i의 값 : " + i);
} else {
console.log(i, "i의 값 : " + i);
}
}
3과 5의 공배수엔 15 배수의 문자열일 때에는 fizzbuzz가 최우선으로 실행되어야 한다. 따라서 15일 때 조건문을 가장 위에 넣었다. 3과 5가 겹치지 않는 숫자일 때에는 알아서 각자의 경우를 찾아가기 때문에 3과 5의 조건문 위치가 바뀌어도 상관 없다.
2번. Biggest Number
- 가장 큰 수가 출력되도록 해라.
var a = -Infinity;
var b = NaN;
var c = Infinity;
if (a >= b && a >= c) {
if (a === b && a === c) {
console.log('가장 큰 수 a = ' + a);
console.log('가장 큰 수 b = ' + b);
console.log('가장 큰 수 c = ' + c);
} else if (a === c) {
console.log('가장 큰 수 a = ' + a);
console.log('가장 큰 수 c = ' + c);
} else if (a === b) {
console.log('가장 큰 수 a = ' + a);
console.log('가장 큰 수 b = ' + b);
} else {
console.log('가장 큰 수 a = ' + a);
}
} else if (b >= a && b >= c) {
if (b === a && b === c) {
console.log('가장 큰 수 a = ' + a);
console.log('가장 큰 수 b = ' + b);
console.log('가장 큰 수 c = ' + c);
} else if (b === c) {
console.log('가장 큰 수 b = ' + b);
console.log('가장 큰 수 c = ' + c);
} else if (b === a) {
console.log('가장 큰 수 a = ' + a);
console.log('가장 큰 수 b = ' + b);
} else {
console.log('가장 큰 수 b = ' + b);
}
} else if (c >= a && c >= b) {
if (c === a && c === b) {
console.log('가장 큰 수 a = ' + a);
console.log('가장 큰 수 b = ' + b);
console.log('가장 큰 수 c = ' + c);
} else if (c === b) {
console.log('가장 큰 수 b = ' + b);
console.log('가장 큰 수 c = ' + c);
} else if (c === a) {
console.log('가장 큰 수 a = ' + a);
console.log('가장 큰 수 c = ' + c);
} else {
console.log('가장 큰 수 c = ' + c);
}
} else {
console.log('Is this Number?')
}
가장 큰 수를 고르라면 누구나 당연하게 별 생각 없이 큰 수를 고를텐데, 나의 뇌가 어떻게 이 큰 수를 비교할까를 생각하며 코드를 짜니 조금 머리 아프다.
a, b, c 모두 같을 수 있지 않은가! 숫자가 아닌 것이 섞여 있을 수도 있다. a = b = c일 때가 가장 우선 순위로 와야 한다는 것도 생각해야 한다. 안그러면 a = b =c 상황에서 a랑 b만 출력될 수도 있다.
별거 아닌 것 같은데도 길게 쓰여졌다... Prep Guide보면 Math.max를 사용하면 간단하단다. 어쨋든 위의 경우는 어떤 수를 대입하더라도, 숫자가 아닌 값을 대입하더라도 적절한 결과를 도출해내는 것을 확인했다.
이 또한 중복이 많은데 더 좋은 방법이 있을 것 같습니다. 알려주시면 감사드리겠습니다!
3번. Word Position
- 문장 속에서 단어를 찾고 단어의 처음 Index와 마지막 Index를 출력하라.
var word = ',';
var sentence = 'Hi guys, just call me SeungJun. How are you?';
var first = sentence.indexOf(word);
var second = first + word.length - 1;
if (first === -1) {
console.log('Sorry, I cannot find it.');
} else if (isNaN(first) === false && isNaN(second) === false) {
console.log(first, second);
}
찾을 수 없다면 'Sorry, I cannot find it'이라는 문구를 띄우게 했다. 숫자가 아닌 값이 대입되면 에러가 뜬다. 또한 한 자릿수의 글자를 대입하게 된다면 이 또한 적절하게 값이 출력된다. 위의 경우 처럼 ,를 대입하면 7 7이 뜬다.
안타깝게도 H를 대입했을 때 두번 째 H의 Index값은 출력되지 않는다...
누군가에겐 간단한 문제이지만 나에겐 조금 생각이 필요한데 풀어나가고 해답이 보이는 과정이 꽤 재밌다! 방해 요소가 없는 한 몰입해서 하게 되고 꼭 풀고 싶어진다. 시간도 엄청 잘 지나간다. 이러한 문제를 푸는 것도 알고리즘의 한 부분일까?
'프로그래밍 > 바닐라코딩_Prep Guide' 카테고리의 다른 글
Step 2. JavaScript(8) - Arrays, 배열 (0) | 2021.11.28 |
---|---|
Step 2. JavaScript(7) - Function, 함수 (0) | 2021.11.28 |
Step 2. JavaScript(5) - for, 반복문 (0) | 2021.11.25 |
Step 2. JavaScript(4) - if, 조건문 + switch (0) | 2021.11.25 |
Step 2. JavaScript(3) - Truthy and Falsy + Logical Operator (0) | 2021.11.25 |