[7번 음양더하기]
문제 풀이
나의 풀이
function solution(absolutes, signs) {
var answer = 0;
for (let i = 0; i < absolutes.length; i++) {
if (signs[i] === false) {
answer -= absolutes[i]
} else {
answer += absolutes[i]
};
};
return answer;
}
문자열 0을 넣었을때 왜 몇개는 통과하고 몇개는 실패 했을까?
[17번 문자열 다루기 기본]
나의 풀이
function solution(s) {
var answer = true;
for (let i = 0 ; i < s.length; i++) {
if (( s.length !== 4 && s.length !== 6 ) || isNaN(s[i]) == true) {
answer = false
};
console.log(isNaN(s[i]))
};
return answer;
}
참고할 만한 풀이
function alpha_string46(s){
var regex = /^\d{6}$|^\d{4}$/;
return regex.test(s);
}
[18번 서울에서 김서방 찾기]
나의 풀이
function solution(seoul) {
var answer = `김서방은 ${seoul.indexOf('Kim')}에 있다`;
return answer;
}
indexOf()
https://hianna.tistory.com/404
[Javascript] 배열 특정 값 위치(index) 찾기 - indexOf(), lastIndexOf()
배열에서 특정 값의 위치 index를 찾는 방법을 소개합니다. Javascript에서 배열에서 특정 값의 위치를 찾는 방법은 다양합니다. 이번에는 먼저, indexOf() 함수와 lastIndexOf() 함수를 사용하여 배열에서
hianna.tistory.com
[19번 수박수박]
나의 풀이
function solution(n) {
var answer = '';
if (n % 2 === 0) {
answer = '수박'.repeat((n / 2))
} else {
answer = '수박'.repeat(Math.floor(n / 2)) + '수'
};
return answer;
}
올림,반올림,내림
https://devdesigner.tistory.com/40
[Javascript] 정수 올림, 반올림, 내림하기
자바스크립트는 Math.ceil(), Math.round(), Math.floor() 라는 함수를 제공해서 올림, 반올림, 내림을 가능하게 해준다. 그러나 이것은 소숫점 둘째자리까지의 계산이라서 정수 단위의 올림은 불가능하다.
devdesigner.tistory.com
[20번 완주하지 못한 선수] - 보류
[21번 이상한 문자 만들기] - 보류
[22번 자릿수 더하기]
나의 풀이
function solution(n) {
// 숫자를 문자열로 전환하지 않으면 split을 사용할 수 없다.
// split을 사용하기 위해서는 parameter가 꼭 필요하다.
let num = n.toString().split('')
// 문자열로 전환된 것을 숫자로 다시 전환해줘야 연산이 가능하다. Number()
// 한자릿수값은 연산이 안되기 때문에 마지막 출력전에 Number()를 다시 한번 씌어줘야 한다.
return Number(num.reduce(function add(accumulator, currValue) {
return Number(accumulator) + Number(currValue);
}));
}
참고할만한 풀이
function solution(n){
// 자바스크립트에서 덧셈 연산자 +를 사용할 때, 피연산자 중 어느 하나가 문자열이면
// 문자열이 아닌 다른 피연산자도 문자열로 형변환되어 문자열을 합친 값이 반환된다.
// 따라서 n+""은 숫자 + 문자열의 형태이기 때문에 결과적으로 문자열 n을 반환하게 된다.
// 따라서 n+""는 String(n)과 동일하게 사용할 수 있다.
return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}
[23번 자연수 뒤집어 배열로 만들기]
나의 풀이
function solution(n) {
// 1. 먼저 숫자 n을 문자로 변환한다.문자로 변환하지 않으면 나누어지지 않는다. - toString()
// 2. 변환한 문자를 각 자리대로 나누어 배열한다. - split('')
// 3. 배열의 순서를 거꾸로 재배열한다. 내림차순이 아닌 것에 주의. - reverse()
// 4. 문자를 다시 숫자로 변환해준다. - map(x => Number(x))
return n.toString().split('').reverse().map(x => Number(x));
}
숫자를 배열로 만들기
https://hianna.tistory.com/707
[Javascript] 숫자를 배열로 변경하는 2가지 방법 (Array.from(), split())
이번 포스팅에서는 Javascript에서 숫자를 배열로 바꾸는 2가지 방법을 소개합니다. Array.from() split(), map() 1. Array.from() Array.from(arrayLike[, mapFn[, thisArg]]) Array.from() 함수는 유사배열객체(array like object)
hianna.tistory.com
배열의 요소를 반전하기
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse
Array.prototype.reverse() - JavaScript | MDN
reverse() 메서드는 배열의 순서를 반전합니다. 첫 번째 요소는 마지막 요소가 되며 마지막 요소는 첫 번째 요소가 됩니다.
developer.mozilla.org
[24번 정수 내림차순으로 배치하기]
나의 풀이
function solution(n) {
return Number(n.toString().split('').sort(function(a, b) {
return b - a;
}).map(x => Number(x)).join(''));
}
배열 내림차순으로 정렬하기
https://hianna.tistory.com/409
[Javascript] 배열 정렬하기 (오름차순, 내림차순, 문자열, 객체)
배열 정렬하기 (오름차순, 내림차순, 문자열, 객체) 1. sort() 함수 2. sort() 함수로 숫자 오름차순 정렬하기 3. sort() 함수로 숫자 내림차순 정렬하기 4. sort() 함수로 문자열 정렬하기 5. sort() 함수로
hianna.tistory.com
[25번 정수 제곱근 판별]
나의 풀이
function solution(n) {
var answer = 0;
// Number.isInteger() : 정수(음수포함)이면 true, 아니면 false를 출력한다.
// Math.sqrt(n) : 양의 정수 n의 제곱근을 출력한다. 음수일 경우 NaN을 출력한다.
if ( Number.isInteger(Math.sqrt(n)) === true) {
// 거듭제곱 ** : 왼쪽 피연산자를 오른쪽 피연산자 만큼 제곱한다.
answer = (Math.sqrt(n) + 1) ** 2
} else {
answer = -1
};
return answer;
}
정수 판별
[JavaScript] isInteger() - 전달된 값이 정수인지를 확인하는 메소드
Number.isInteger() 메소드 Number.isInteger() 메소드는 인수의 값이 정수인지 아닌지를 반환해줍니다. 전달된 값이 정수이면 true를 아니라면 NaN, Infinity와 같은 값은 모두 false를 반환합니다. 아래 예제를
itprogramming119.tistory.com
제곱근 구하기
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt
Math.sqrt() - JavaScript | MDN
Math.sqrt() 함수는 숫자의 제곱근을 반환합니다.
developer.mozilla.org
거듭제곱 연산자
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Exponentiation
거듭제곱 (**) - JavaScript | MDN
거듭제곱 연산자(**)는 왼쪽 피연산자를 밑, 오른쪽 피연산자를 지수로 한 값을 구합니다. BigInt도 피연산자로 받을 수 있다는 점을 제외하면 Math.pow()와 같습니다.
developer.mozilla.org
[26번 제일 작은 수 제거하기]
나의 풀이
function solution(arr) {
// if문 안에서 변수 선언을 해주니 최소값이 계속 변하는 현상이 있었다. - 지역변수
// 그래서 바깥에서 변서 선언을 해주니 최소값이 변하지 않고 해결되었다. - 지역변수를 전역변수로 바꿔줌
let minNum = Math.min.apply(null, arr)
if (arr.length === 1) {
arr = [-1]
} else {
for (let i = 0; i < arr.length; i++) {
// arr[i] 가 최소값일 경우에만 제거해준다.
if (arr[i] === minNum) {
arr.splice(i, 1);
i--;
};
};
};
return arr;
}
참고할만한 풀이
function solution(arr) {
arr.splice(arr.indexOf(Math.min(...arr)),1);
if(arr.length<1)return[-1];
return arr;
}
배열에서 최대값/최소값 찾기
https://hianna.tistory.com/487
[Javascript] 배열에서 최대값, 최소값 구하기
Javascript 배열의 여러 원소들 중 최대값, 최소값을 구하는 방법을 정리합니다. 1. Math.max(), Math.min() 소개 2. Function.prototype.apply() 사용하기 3. Spread Operator(전개 연산자) 사용하기 1. Math.max(), Math.min()
hianna.tistory.com
배열의 요소를 삭제하는 방법
https://developer-talk.tistory.com/153
[JavaScript]배열의 요소를 삭제하는 방법
JavaScript에서 배열의 요소를 삭제하는 remove 함수가 존재하지 않습니다. remove 함수는 존재하지 않지만, 배열의 요소를 삭제할 수 있는 다양한 방법이 존재합니다. 이번 포스팅에서는 JavaScript에서
developer-talk.tistory.com
빈 배열인지 확인하는 쉬운 방법
https://codechacha.com/ko/javascript-check-if-array-empty/
JavaScript - 빈 배열인지 확인 (Empty Array)
자바스크립트에서 배열이 비어있는지 확인하는 방법을 소개합니다. length 배열의 길이를 나타내기 때문에 length가 0이면 배열이 비었다고 판단할 수 있습니다. 배열이 아닌 `length` 프로퍼티를 갖
codechacha.com
[27번 콜라츠 추측]
나의 풀이
function solution(num) {
var answer = 0;
// 무한반복문은 while을 활용한다. 조건식이 참이면 반복한다.
while (num > 1) {
if (num % 2 === 0) {
num = num / 2;
answer += 1;
} else {
num = (num * 3) + 1;
answer += 1;
};
};
if ( answer >= 500) {
return -1
} else {
return answer
};
}
참고할 만한 풀이
function collatz(num) {
var answer = 0;
while(num !=1 && answer !=500){
// 삼항연산자 num%2==0 참이면 num = num/2 실행, 거짓이면 num = num*3 +1
num%2==0 ? num = num/2 : num = num*3 +1;
// 1 더하기
answer++;
}
return num == 1 ? answer : -1;
}
자바스크립트 반복문
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Loops_and_iteration#while_%EB%AC%B8
루프와 반복 - JavaScript | MDN
루프는 어떤 것을 반복적으로 시행할때 빠르고 간편한 방법을 제공합니다. JavaScript Guide의 이 항목은 JavaScript 에서 사용이 가능한 서로 다른 여러가지 반복문을 소개합니다.
developer.mozilla.org
[28번 하샤드 수]
나의 풀이
function solution(x) {
// 간략한 함수를 통해 숫자 x의 각 자릿수의 합을 구해준다.
// 함수가 너무 길어져서 변수 y를 지정해 주었다.
let y = (x+"").split('').reduce((acc, curr) => acc + parseInt(curr),0)
if (x % y === 0) {
return true
} else return false
}
[29번 3진법 뒤집기]
나의 풀이
function solution(n) {
return parseInt(n.toString(3).split('').reverse().join(''), 3);
}
참고할 만한 풀이
const solution = (n) => {
// 전개연산자를 사용해서 배열로 정리하였다.
return parseInt([...n.toString(3)].reverse().join(""), 3);
}
자바스크립트 진수 변화 방법
https://jsikim1.tistory.com/161
JavaScript 진수 변환 방법
JavaScript 진수 변환 방법 JavaScript 에서 진수 변환하는 방법을 알려드리도록 하겠습니다. 10진수에서 n진수로 변환하는 방법 var decimal = 1023; var binary = decimal.toString(2);// 2진수로 var octal = decimal.toStrin
jsikim1.tistory.com
[30번 최소직사각형] - 보류
[31번 같은 숫자는 싫어]
나의 풀이
function solution(arr) {
var answer = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== arr[i + 1]) {
answer.push(arr[i])
};
};
return answer;
}
[32번 두 개 뽑아서 더하기]
나의 풀이
function solution(numbers) {
var answer = [];
// 각 인덱스의 숫자를 먼저 더해주었다. 인덱스가 같은 경우를 피하기 위해 if문을 사용하였다.
for (let i = 0; i < numbers.length; i++) {
for (let j = 0; j < numbers.length; j++) {
if (i !== j) {
answer.push(numbers[i] + numbers[j])
};
};
};
// 오름차순으로 정렬해주었다.
let ansArr = answer.sort((a, b) => a - b);
// 중복값을 제거하여 새로운 배열을 구성하였다.
let newAns = [];
for (let i = 0; i < ansArr.length; i++) {
if (ansArr[i] !== ansArr[i + 1]) {
newAns.push(ansArr[i])
};
};
return newAns
}
참고할 만한 풀이
function solution(numbers) {
const temp = []
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
temp.push(numbers[i] + numbers[j])
}
}
// set을 이용한 중복제거
const answer = [...new Set(temp)]
return answer.sort((a, b) => a - b)
}
총평
많이 는거는 맞다. 그런데 이제 난이도의 장벽에 부딪혔다. 내일부터 클린한 마음으로 풀어보면서 질문도 좀 해야 할것 같다.
'Hanghae99' 카테고리의 다른 글
| 221124 TIL 알고리즘 문제풀이 5 (0) | 2022.11.24 |
|---|---|
| 221123 TIL 알고리즘 문제풀이 4 (0) | 2022.11.24 |
| 221121 TIL 알고리즘 문제풀이 2 (0) | 2022.11.22 |
| 221120 WIL 항해99 1주차 회고 (0) | 2022.11.21 |
| 221119 JS 알고리즘 문제풀이 1 (0) | 2022.11.20 |