<오늘의 문제>
- n의 배수 고르기
- 개미 군단
- 분수의 덧셈⭐️⭐️⭐️
1. n의 배수 고르기
function solution(n, numlist) {
var answer = [];
for(let i = 0; i < numlist.length; i++){
if(numlist[i] % n === 0) {
answer.push(numlist[i])
}
}
return answer;
}
- 나의 풀이
: 여러 요소값이 담긴 numlist에서 n의 배수값만 뽑아서 return하는 문제였다.
그렇다면 numlist의 인덱스[0] 부터 차례대로 n으로 나눈 나머지값 0인 값을 찾다보면 n의 배수인 인덱스만 찾을수 있겠지?
2. 개미 군단
function solution(hp) {
var answer = 0;
while(hp >= 5) {
hp = hp - 5
answer ++;
} while(hp >= 3) {
hp = hp - 3
answer ++;
} answer += hp
return answer;
}
- 나의 풀이
: 처음에 if문이 떠오르지않아서 간만에 while문을 썼는데 역시나 모양이 어색하다
중괄호를 넣는 타이밍을 잘 모르곘다 ㅋㅋ..
일단 hp가 첫번째 조건식에서부터 깎여나가고 더이상 hp가 5로 빼지지 않을때 다음 조건으로 넘어가고,
3으로 더이상 뺄 수 없는값이 되었을땐 일개미에게 마지막으로 바톤이 터치된다.
function solution(hp) {
var answer = 0;
if (hp >= 5) {
answer += Math.floor(hp / 5);
hp %= 5;
} if (hp >= 3) {
answer += Math.floor(hp / 3);
hp %= 3;
} answer += hp;
return answer;
}
- 나의 다른 풀이
: while문과 흡사하지만, 과정은 비슷하다. hp를 5나누고(정수값이 필요하니 Math.floor),
나머지값을 다음 조건으로 내려보내는 과정이다.
3. ⭐️⭐️⭐️분수의 덧셈⭐️⭐️⭐️
function solution(numer1, denom1, numer2, denom2) {
let numer = numer1 * denom2 + numer2 * denom1
let denom = denom1 * denom2
let maximum = 1
for (let i = 1; i <= numer; i++) {
if(numer % i === 0 && denom % i === 0) {
maximum = i
}
}
return [numer / maximum, denom / maximum]
}
- 나의 풀이
: 쉽게 생각했다가 몇시간은 못풀었다... 일단 분수의 덧셈의 과정을 분자와 분모를 나누어서
풀어서
작성한 뒤에, 최대공약수를 기본값 1로 설정한다. 최대공약수를 찾아야하는 이유는
기약분수란 분자와 분모 사이의 최대 공약수가 1인 분수이기 때문이다..
자세한 설명은 주석에 달아뒀다.. 수학문제를 코테로 만나기싫다 정말 싫다..ㅠㅠ