<오늘의 문제>
- 숨어있는 숫자의 덧셈 (1)
- 짝수는 싫어요
- 중앙값 구하기
- 제곱수 판별하기
- 세균 증식
1. 숨어있는 숫자의 덧셈 (1)
function solution(my_string) {
var answer = 0;
const newString = my_string.replaceAll(/[a-zA-Z]/g, "").split("")
for(let i = 0; i < newString.length; i++) {
answer += Number(newString[i])
}
return answer;
}
- 나의 풀이
: 자바로 풀었던 문제인데 /[a-zA-Z]/g 정규식 표현을 몰라서 애먹었다.
일단 새로운 변수값을 선언하고 my_string의 알파벳을 모두 제외한뒤 split으로 나머지 값(숫자)하나씩 뽑아줬고,
남아있는 숫자들은 문자열로 정리되어있으니, Number로 변환을 시켜준뒤 answer값에 넣었다.
2. 짝수는 싫어요
function solution(n) {
var answer = [];
for(let i = 0 ; i <= n ; i++) {
if (i % 2 !== 0) {
answer.push(i)
}
}
return answer;
}
- 나의 풀이
: 뭐....그렇다 짝수 구하는 공식은 몸에 베였다
3. 중앙값 구하기
function solution(array) {
const middleNumber = array.sort((a, b) => a - b)[Math.floor(array.length / 2)]
return middleNumber;
}
- 나의 풀이
: 새로운 변수값을 선언한 뒤 array값을 오름차순을 해주고 인덱스값을 length / 2 을 하고 소주점을 뺴주면
배열의 정중앙 인덱스가 나온다.
const solution = (array) =>
array
.sort((a, b) => a - b)
.at(Math.floor(array.length / 2))
- 다른 사람 풀이
: .at은 간간히 다른 사람 풀이에서 보이는데 요즘 자주 보이는거같다
인덱스값을 나타내준다고 하네.
4. 제곱수 판별하기
function solution(n) {
var answer = 0;
const squareNumber = Math.sqrt(n)
if (Math.floor(squareNumber) === squareNumber) {
answer = 1;
} else {
answer = 2;
}
return answer;
}
- 나의 풀이
: 주석에 설명을 달아뒀다. 제곱근 문제는 심심찮게 나오고 내 머리로는 메소드를 쓰지않고 구하는 식이
전혀 머리속에 떠오르지않는다.. 쉽게 갈 수 있는길이 있다면 그렇게 가고싶다 ㅠ..
function solution(n) {
return Math.sqrt(n) % 1 === 0 ? 1 : 2;
}
- 다른 사람 풀이
: 소수는 1로 나누었을때 0이 나올 수 없다..! 이럴슈가
5. 세균 증식
function solution(n, t) {
for(let i = 1; i <= t; i++) {
n *= 2
}
return n;
}
- 나의 풀이
: 처음엔 제곱에만 연연하다보니 값이 계속 작은 값으로 출력되서 문제를 다시보고 거듭제곱이라는걸 깨달았다.
반복문을 돌면서 4, 8 식으로 올라가며 값을 더하게된다.
function solution(n, t) {
var answer=0;
return n * (2 ** t);
}
- 다른 사람 풀이
: ** 라는 연산자는 아예 잊고있었는데 이렇게 유용하게도 쓰이는구나?