240125 목 TIL ✍ ...
👩💻 프로그래머스 문제 : 정수 제곱근 판별 (아래 링크)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
n의 제곱근이 x일 때(x의 제곱이 n)
함수에서 (x+1)의 제곱을 반환, 아니면 -1을 반환한다.
아래는 내가 문제를 푼 코드! (JS) - 기본적인 for반복문과 if문을 활용해 풀었다
function solution(n) {
let answer = 0;
for(let x = 1; x <= n; x++) {
if (n/x == x) {
return (x+1)**2;
} else {
answer = -1;
}
}
return answer;
}
아직 알고리즘 문제들을 수월하게 푸는 편은 아니라, 이 문제를 봤을 때 처음부터 어떻게 풀어야 할 지 약간 막혔지만.. 풀었다 !
우선 for반복문에서 x의 범위를 설정해주고
(x는 양의 정수이므로 1부터, n까지이다. n의 제곱근이니 n보다 클 수 없기에),
x를 하나하나 돌려가며 if문 조건 (x^2=n 그러니까 코드로는 x**2, n/x == x)에 해당하면, 문제 조건에 맞게 반환.
아니라면 -1을 (for문바깥에서 선언했던) answer 변수에 담아준다.
(**여기서 for문 안에서 변수 선언하면 안된다.)
(그리고 return은 for문 끝난 후 해준다! else { } 안에서 return을 해주게되면, 바로 else 에 해당할 때 return 하면서 for문을 끝내버리기 때문이다. 계속 일단 answer 변수에 -1을 담아뒀다가, for반복문이 x<=n까지 모두 돌고 끝나고 나서야(x**2==n의 경우가 없었다면) -1을 리턴하도록 해준다)
게다가 다양한 메서드들을 정리해가고 있긴 하지만, 모르는 메서드도 많다.
실제 이 문제를 풀이한 다른 사람들은 Math.sqrt() 메서드나 reduce() 메서드를 사용하기도 했다.
reduce() 배열메서드는 많이 쓰는 거 같지만 아직 써본 적이 없다.. MDN문서 등 읽어봤지만 좀 어렵다 ..ㅠㅠ 다음에 map, filter 등의 배열메서드와 함께 같이 정리해봐야겠음!
* Math.sqrt() 메서드 : 숫자의 제곱근을 반환. 주어진 숫자에 루트(√ )를 씌워준다. 따라서, 정수 혹은 소수가 나올 수도 있다. 음수를 넣으면 NaN으로 뜬다 (실수 범위에서 생각, 허수는 따지지 않으므로)
(예제 출처-MDN문서)
Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095
Math.sqrt(1); // 1
Math.sqrt(0); // 0
Math.sqrt(-1); // NaN
'✍️ Today what I Learned _TIL' 카테고리의 다른 글
[개인 Project] My To-Do List -React페이지 보완하기 (추가,삭제,완료버튼+날짜입력 및 오름차/내림차순 정렬 과제하기) (0) | 2024.01.29 |
---|---|
[Algorithm_JS] 정수 내림차순으로 배치하기 (2) | 2024.01.28 |
[React] CRA 보다 빠른 Vite로 React 프로젝트 생성하기 (0) | 2024.01.24 |
[개인 Project] My To-do List 페이지 만들기 _ 간단한 회고 (0) | 2024.01.24 |
[240102 TIL] 웹개발 기초 3~5주차 완강 / JS 문법 1주차 (Fetch, Firebase, JS 특징과 변수 ) (2) | 2024.01.02 |