프로그래머스 JS 코테 | 나누어 떨어지는 숫자 배열, 두 정수 사이의 합, 부족한 금액 계산하기 | 가우스 공식
오랜만에 코딩 테스트로 복귀했다 !
여태 처음으로 그룹 프로젝트를 하느라 다른 공부를 전혀 못했다.
(사실 서울 가서 살면서 대면 강의실에 나가서 했는데.. 생각보다 교통이 빡셌다... 나갔다 오면 너무 피곤했듬..)
그래서 다시 제주도 집에 내려와서 공부하는 감도 되찾고... 계속 놀고 싶고 눕고 먹고 싶어서 큰일이지만
더 이상 미룰 수 없기 때문에.. 얼른 코테를 잡아 풀었다..!
오늘(공부는 늦게 시작했지만)부터 다시 열품타도 시작하고 열심히 공부하기로 !!!
아침에 일어나는게 더 힘들어졌다... 그렇다고 늦게 자는 것도 아니어서 커피를 마시고 늦게까지 공부해서 9시 54분에 일어나기로 !!!
어차피 출첵때 일어나고 새벽이 공부가 잘 되니까 ..! 잠만 안 오면 된다. (<- 이건 커피 마시면 된다 ㅎ)
아무튼 .! 이번엔 세 문제를 가져왔다.
1단계로 후루룩 풀려고 크게 어려운 문제 말고 쉬워보이는 문제라서 굉장히 빠르게 큰 도움 없이 내 힘으로만 풀었다.
Lv.1 나누어 떨어지는 숫자 배열
https://school.programmers.co.kr/learn/courses/30/lessons/12910

1트만에 바로 성공 ..!
function solution(arr, divisor) {
const answer = []
for(let i = 0; i <= arr.length; i++) {
if(arr[i] % divisor === 0) {
answer.push(arr[i])
}
}
if(answer.length === 0) {
return [-1]
} else {
return answer.sort((a,b) => a - b)
}
}
for문으로 arr 배열의 길이만큼 순회해서 divisor로 나눠보고, 나머지가 0이 되는 값을 새 배열 answer에 넣는다.
만약 answer이 빈 배열이라면 [-1]을 리턴하고, 아니라면 answer 배열을 정렬해서 return한다.
더 간략화 해보자.
function solution(arr, divisor) {
const answer = []
for(let i = 0; i <= arr.length; i++) {
if(arr[i] % divisor === 0) answer.push(arr[i])
}
return answer.length === 0 ? [-1] : answer.sort((a,b) => a - b)
}
if문을 줄여보았다.
다른 사람들은 filter를 사용했다…
function solution(arr, divisor) {
var answer = arr.filter(v => v%divisor == 0);
return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b);
}
하하….
map을 썼어도 됐었는데 얼른 넘어가고 싶었나보다..^^
Lv.1 두 정수 사이의 합
https://school.programmers.co.kr/learn/courses/30/lessons/12912

첫 번째 시도
function solution(a, b) {
let answer = 0
let smallNum = 0
let bigNum = 0
for (let i = 0; i <= (bigNum - smallNum); i ++) {
answer += smallNum + i
}
if (a > b) {
smallNum = a
bigNum = b
return answer
} else if (a < b) {
smallNum = b
bigNum = a
return answer
} else {
return a
}
}
이렇게 해보려 했으나 실패…
function solution(a, b) {
let answer = 0
let smallNum = 0
let bigNum = 0
if (a > b) {
bigNum = a;
smallNum = b;
} else if(b > a) {
bigNum = b;
smallNum = a;
} else {
answer = a
}
for (let i = 0; i <= (bigNum - smallNum); i++) {
answer += (smallNum + i)
}
return answer
}
이렇게 if문을 위에다 쓰니 통과 !
뭐지?
그래도 코드 길이가 너무 길다…
Lv.1 부족한 금액 계산하기
https://school.programmers.co.kr/learn/courses/30/lessons/82612

function solution(price, money, count) {
total = 0
for(let i = 1; i < count+1; i++) {
total += price * i
}
return total - money
}
1트만에 성공하는 듯 싶었으나…

뭐냐고…
금액이 부족하지 않으면 0을 return 하세요.
이거 때문이다 !
가우스 공식
이 두 문제를 풀면서 다른 사람 풀이에 계속 가우스 공식 이라는 말이 나왔는데,
찾아보니 등차 수열의 합 계산법이라고 한다.
첫 항과 마지막 항을 더한 뒤 항의 개수를 곱하고 2로 나눈 값이다.
(등차수열의 합) = {(첫 항 + 마지막 항) * (항의 개수)} / 2
신기하다... 다음에 써먹을 일이 있으면 꼭 써먹어야겠다..!
(아니 다음 코테 문제는 이걸 이용한걸 일부러 골라서 풀어봐야겠다)