Today I Learend
- Programmers 문제 풀기
- 이력서 작성
Programmers 문제 풀기
정수 제곱근 판별
나의 풀이
function solution(n) {
return Math.sqrt(n) % 1 === 0 ? (Math.sqrt(n) + 1) ** 2 : -1
}
이 문제 풀면서 제곱근 관련 메서드나 연산자를 배울 수 있었다.
- Math.sqrt() 함수는 숫자의 제곱근을 반환합니다.
- 공식 문서 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt
숫자가 정수인지 판별하기
- Number.isInteger() 메서드로 주어진 값이 정수인지 판별.
- number % 1 === 0이 true일 때.
- 참고 https://hianna.tistory.com/463
console.log(3 ** 4);
// Expected output: 81
- 거듭제곱 연산자: **
나머지가 1이 되는 수 찾기
나의 풀이
function solution(n) {
for ( i = 1; i < n; i++ ) {
if ( n % i === 1 ) {
return i;
}
}
}
하샤드 수
나의 풀이
function solution(x) {
let answer = 0;
x.toString().split("").forEach((num) => answer += parseInt(num));
return x % answer === 0 ? true : false;
}
다른 사람의 풀이
function Harshad(n){
return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
}
내 풀이랑 비슷한데 not 연산자 활용해서 return문 한 줄로 끝낼 수 있다. 그리고 forEach문 말고 reduce도 가능함! (사실 reduce 시도해 봤다가 이유는 모르겠지만 실패했다..) 또 하나 알게 된 점, 굳이 true, false를 삼항으로 적어줄 필요가 없었다..!
function solution(x) {
return x % x.toString().split("").reduce((acc, cur) => parseInt(acc) + parseInt(cur), 0) === 0;
}
다른 사람 풀이보고 수정해 본 내 답변.
두 정수 사이의 합
나의 풀이
function solution(a, b) {
let answer = 0;
if ( a > b ) {
for ( i = b; i <= a; i ++) {
answer += i
}
} else {
for ( i = a; i <= b; i ++) {
answer += i
}
}
return answer;
}
it문으로 처리하기... 정말 이게 최선의 방법일까? 아마 다른 사람들 답변 보면 for문 말고 다른 방식으로 처리할 수도 있을 거 같다.
다른 사람의 풀이
function adder(a, b, s = 0){
for (var i = Math.min(a, b); i <= Math.max(a, b); i++) s += i;
return s;
}
for문 돌리는데 조건을 다르게 주어서 else문으로 예외 처리할 필요가 없어졌다. a, b 중에 더 작은 값을 초기화구문에 넣고 큰 값을 조건문에 넣는다! 대박... 간단한 건데 이 생각을 못했네🫠
- Math.min() 함수는 주어진 숫자들 중 가장 작은 값을 반환합니다.
- Math.max() 함수는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환합니다.
회고
이력서 너무 쓰기 싫어서 프로그래머스 문제 엄청 풀었다. 갑자기 간절하게 코드 짜고 싶어지고 알고리즘 푸는 게 너무 재밌다...! 진짜 이력서, 자소서 이런 거 제일 싫다 너무 재미없어🫠
'알고리즘 > Programmers' 카테고리의 다른 글
[TIL] 2023.03.20 Programmers 문제 풀기 (0) | 2023.03.20 |
---|---|
[TIL] 2023.03.19 Programmers 문제 풀기 (0) | 2023.03.19 |
[TIL] 2023.03.18 Programmers 문제 풀기 (0) | 2023.03.18 |
[TIL] 2023.03.17 Programmers 문제 풀기 (0) | 2023.03.17 |
[TIL] 2023.03.16 Programmers 문제 풀기 (0) | 2023.03.16 |
댓글