[Algorithm_JS] 프로그래머스 문제풀이 : 정수 제곱근 판별

2024. 1. 26. 09:26·✍️ Today what I Learned _TIL
SMALL

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

 

SMALL

'✍️ 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
'✍️ Today what I Learned _TIL' 카테고리의 다른 글
  • [개인 Project] My To-Do List -React페이지 보완하기 (추가,삭제,완료버튼+날짜입력 및 오름차/내림차순 정렬 과제하기)
  • [Algorithm_JS] 정수 내림차순으로 배치하기
  • [React] CRA 보다 빠른 Vite로 React 프로젝트 생성하기
  • [개인 Project] My To-do List 페이지 만들기 _ 간단한 회고
련디
련디
FE - 개발 공부의 기록
  • 련디
    Ryeon's Devstory
    련디
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • 🪴 JavaScript & TypeScript (11)
        • 🧩 Algorithm (6)
      • 🪴 React (12)
      • 🪴 Next.js (8)
      • 🪴 HTML & CSS (2)
      • 🪴 DB & BaaS (5)
      • 🪴 Git &Github (0)
      • ✍️ 프로젝트 과정 & 회고 (18)
      • ✍️ Today what I Learned _T.. (11)
      • 🕊️ IT 아티클 (0)
      • etc. (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • My Github 😺
    • 네이버 블로그 🎵🎧 (일상,음악 등)
  • 공지사항

  • 인기 글

  • 태그

    Vite
    reacthook
    BAAS
    useMutation
    props
    State
    Supabase
    Next.js
    fetch
    Array.filter
    json-server
    axios
    티스토리챌린지
    tailwind
    타입스크립트
    배열 메서드
    route handler
    리액트쿼리
    useEffect
    컴포넌트분리
    티스토리블로그스킨
    오블완
    웹개발 기초
    reactquery
    react
    에러
    NVM
    의존성배열
    렌더링패턴
    비동기통신
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
련디
[Algorithm_JS] 프로그래머스 문제풀이 : 정수 제곱근 판별
상단으로

티스토리툴바