-
[매일코딩-프로그래머스] x만큼 간격이 있는 n개의 숫자WEB Dev/CordingTEST 2022. 1. 13. 10:45728x90
오늘은 직사각형 별찍기 옆에 있는 문제를 풀어보자 (~ ̄▽ ̄)~
[문제] x만큼 간격이 있는 n개의 숫자
우선 숫자를 두 개 준다. 각각 x와 n으로 넘겨주고, x부터 시작해 x씩 증가하는 숫자를 n개 가지는 배열을 리턴하는 함수를 가지게 된다.
조건은 x는 -10000000 이상 10000000 이하의 정수고, n은 1000 이하의 자연수이다.
[풀이]
처음에는 제한조건을 완전히 무시하고 풀었었는데, 이것도 문제의 일부분이라 조건을 잘 맞춰야 하더라.
자바스크립트는 자연수와 정수를 크게 구분하지 않는 것으로 알고 있는데 (아닐수도 있습니다!!!)
메소드를 찾아보니 정수인지 아닌지 판별하는 메소드가 있었다.
Number.isInteger() - JavaScript | MDN
Number.isInteger() 메서드는 주어진 값이 정수인지 판별합니다.
developer.mozilla.org
이 메소드는 익스플로러는 지원을 하지 않기 때문에 ^^ 해당 숫자를 1로 나누어서 나머지가 0이 되는지 확인하는 판별식을 사용할 수도 있다.
[Javascript] 숫자가 정수인지, 실수인지 체크하는 2가지 방법
Javascript에서 값이 정수인지 실수인지 체크하는 2가지 방법을 소개합니다. Number.isInteger() 함수 나머지 연산자(%) 활용 1. Number.isInteger() 함수 document.writeln(Number.isInteger(10)); // true docum..
hianna.tistory.com
그리고 자연수는 0이 아닌 양의 정수이기 때문에 0이 아니고 0보다 작지 않은 수를 1로 나눴을 때 나머지가 0인지 판별하면 되겠다.
조건식 작성
우선 주어진 조건에 맞게 식을 작성해보자.
x의 범위를 확인하고, x가 정수인지 확인하고, n의 범위를 확인하고, n이 정수인지 확인해주자.
function solution(x, n) { var answer = []; if(-10000000 <= x <= 10000000 && x % 1 == 0 && 0 < n <= 1000 && n % 1 == 0){ } return answer; }
좀 조건이 많이 정신없이 적힌 것 같지만 x의 범위와 정수 판별식, n의 범위와 n 정수 판별식이 들어있다.
이 모든 것이 통과되어 true가 되면 내부 식이 실행될 수 있도록 && AND로 작성하였다.
그리고 반복문을 통해 n개의 값이 answer 배열 안에 들어가도록 해보자.
배열 만들기
처음 생각난건 변수 i를 정해 answer 배열에 반복해서 값을 넣어주는 것인데, x 부터 시작해 x만큼 증가하려면 x 씩 더해야 할 것 같았다.
function solution(x, n) { var answer = []; if(-10000000 <= x <= 10000000 && x % 1 == 0 && 0 < n <= 1000 && n % 1 == 0){ for(let i=1; i<=n; i++){ answer.push(x) x += x; } } return answer; }
일단 if 문은 정상적으로 통과했지만 값이 전혀 맞지 않았다. 3은 왜 통과한거지 ㅋㅋㅋㅋㅋ
값이 2씩 늘어야 하는데, 배수로 늘고 있었다. x가 초기화되어야 할 것 같다.
function solution(x, n) { var answer = []; var i=0; if(-10000000 <= x <= 10000000 && x % 1 == 0 && 0 < n <= 1000 && n % 1 == 0){ while(i<n){ answer.push(x) x += x i++ } } return answer; }
while로 바꿔도 뾰족한 수가 없네... 싶었는데 생각해보니 이거 구구단같이 곱셈으로 처리하면 될 것 같았..다!
그래서 아래와 같이 i를 1부터 시작하도록 하고, n번 반복하며, push해줄 때 i를 곱해주면 되었다.
function solution(x, n) { var answer = []; var i=1; if(-10000000 <= x <= 10000000 && x % 1 == 0 && 0 < n <= 1000 && n % 1 == 0){ while(i<=n){ answer.push(x*i) i++ } } return answer; }
결과는...
히히 좋구만
👍😊
728x90'WEB Dev > CordingTEST' 카테고리의 다른 글
[매일코딩-프로그래머스] 문자열을 정수로 바꾸기 01 (0) 2022.01.26 [매일코딩-프로그래머스] 행렬의 덧셈 01 (0) 2022.01.14 [매일코딩-프로그래머스] 직사각형 별찍기 02 (0) 2022.01.12 [매일코딩-프로그래머스] 직사각형 별찍기 01 (0) 2022.01.11 [매일코딩-프로그래머스] 핸드폰 번호 가리기 01 (0) 2022.01.10