2022. 1. 13. 10:45ㆍWEB Dev/CordingTEST
오늘은 직사각형 별찍기 옆에 있는 문제를 풀어보자 (~ ̄▽ ̄)~
[문제] x만큼 간격이 있는 n개의 숫자
우선 숫자를 두 개 준다. 각각 x와 n으로 넘겨주고, x부터 시작해 x씩 증가하는 숫자를 n개 가지는 배열을 리턴하는 함수를 가지게 된다.
조건은 x는 -10000000 이상 10000000 이하의 정수고, n은 1000 이하의 자연수이다.
[풀이]
처음에는 제한조건을 완전히 무시하고 풀었었는데, 이것도 문제의 일부분이라 조건을 잘 맞춰야 하더라.
자바스크립트는 자연수와 정수를 크게 구분하지 않는 것으로 알고 있는데 (아닐수도 있습니다!!!)
메소드를 찾아보니 정수인지 아닌지 판별하는 메소드가 있었다.
이 메소드는 익스플로러는 지원을 하지 않기 때문에 ^^ 해당 숫자를 1로 나누어서 나머지가 0이 되는지 확인하는 판별식을 사용할 수도 있다.
그리고 자연수는 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;
}
결과는...
히히 좋구만
👍😊
'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 |