프로그래머스 알고리즘 테스트
- 프로그래머스 알고리즘 0단계 문제를 풀이했다.
두수의 차
solution.js
function solution(num1, num2) {
var answer = 0;
return answer;
}
num1과 num2를 뺀값을 리턴하는 식을 짜야한다.
다른 풀이1
function solution(num1, num2) {
return parseInt(num1 - num2)
}
다른 풀이2
const solution = (num1, num2) => num1 - num2
다른 풀이3
function solution(num1, num2) {
var answer = num1 - num2;
return answer;
}
숫자비교하기
solution.js
function solution(num1, num2) {
var answer = 0;
return answer;
}
num1과 num2 가 같을때 1을 출력하고 num1과 num2의 값이 다를때 -1을 출력한다.
나의 풀이
function solution(num1, num2) {
if(num1 === num2) {
return 1
}
return -1
}
다른 풀이1
- 삼항연산자를 사용하여 num1과 num2의 값이 같다가 true 일때 1을 출력하고 false일때 -1을 출력한다.
function solution(num1, num2) {
var answer = num1 === num2 ? 1 : -1; // condition ? exprIfTrue : exprIfFalse
return answer;
}
다른 풀이2
- 삼항연산자를 사용하여 num1과 num2의 값이 같다가 true 일때 1을 출력하고 false일때 -1을 출력한다. 변수를 지정하지
않고 return에 그대로 입력하여 코드를 1줄 줄였다.
function solution(num1, num2) {
return num1===num2?1:-1;
}
두 수의 곱
solution.js
function solution(num1, num2) {
var answer = 0;
return answer;
}
- num1과 num2를 곱한값을 return 한다.
나의 풀이
function solution(num1, num2) {
return num1 * num2
}
다른 풀이1
화살표 함수를 사용하여 num1의 값을 a num2의 값을 b로 지정하여 문제를 풀었다.
const solution = (a, b) => a * b
나이 출력
solution.js
function solution(age) {
var answer = 0;
return answer;
}
- 현재 연도에서 age를 뺀 값이 태어난 연도가 되어야 한다.
나의 풀이
function solution(age) {
return 2022 - age + 1;
}
다른 풀이1
const solution = (age) => {
var answer = 2023 - age;
return answer;
}
각도기
solution.js
function solution(age) {
var answer = 0;
return answer;
}
- angle의 값이 90도 미만일때 return 1을 출력한다
- angle의 값이 90일때 return 2를 출력한다.
- angle의 값이 90도 초과 180도 미만일때 return 3을 출력한다.
- angle의 값이 180일때 return 4를 출력한다
나의풀이
function solution(angle) {
if(angle < 90){
return 1
}
if(angle === 90){
return 2
}
if(angle < 180){
return 3
}
if(angle === 180){
return 4
}
}
다른 풀이1
- 봐도 모르겠다.
function solution(angle) {
return [0, 90, 91, 180].filter(x => angle>=x).length;
}
다른 풀이2
- 삼항연산자를 사용하였다.
function solution(angle) {
return angle < 90 ? 1 : angle === 90 ? 2 : angle < 180 ? 3 : 4;
}
짝수의 합
solution.js
function solution(n) {
var answer = 0;
return answer;
}
- 함수를 배열로 불러온다음, 배열안의 값을 다 더하고 평균을 구하는 식을 짜야한다.
나의 풀이
function solution(n) {
let arr = [];
for (let i = 0; i <= n; i++) {
if (i % 2 === 0) {
arr.push(i);
}
}
return arr.reduce((a, b) => (a + b));
}
다른 풀이1
function solution(n) {
var answer = 0;
for(let i=2 ; i<=n ; i+=2)
answer += i;
return answer;
}
다른 풀이2
function solution(n) {
let answer = 0
for (let i = 1; i <= n; i++) {
if (i % 2 === 0) {
answer += i
}
}
return answer
}
배열의 평균값
solution.js
function solution(numbers) {
var answer = 0;
return answer;
}
- 배열을 매개변수에 넣고 for문을 이용하여 배열들의 총합의 값을 구하고 배열의 객체 갯수와 배열의 총합을 나눈 값을 출력 한다.
나의 풀이
function solution(numbers) {
let sum = 0;
for (let i = 0; i < numbers.length; i++) {
sum += numbers[i]
}
return sum / numbers.length
}
다른 풀이1
function solution(numbers) {
var answer = 0;
for(i of numbers) {
answer += i
}
return answer / numbers.length;
}
다른 풀이2
-reduce함수를 이용해 배열안의 값의 총합을 구하고 배열의객체 갯수로 나눴다.
function solution(numbers) {
var answer = numbers.reduce((a,b) => a+b, 0) / numbers.length;
return answer;
}
양꼬치
solution.js
function solution(n,k) {
var answer = 0;
return answer;
}
-n과 k두개의 매개변수 n과 k에 들어 가는 값을 구하고, 서비스 음료수의 값을 뺀다.
나의 풀이
function solution(n, k) {
let price = (n * 12000) + (k-Math.floor(n/10))*2000
return price;
}
다른 풀이1
- parseInt로 먹은 n의 값을 정수로 떨어지게 만들고 *2000하여 개당음료수 값을 계산하여 뺀다. ex) n=23(인분)
(23/10) = 2.3 parseInt(23/10) = 2
function solution(n, k) {
return n*12000 + k*2000 - parseInt(n/10)*2000
}
다른 풀이2
- Math.floor 메소드는 값의 소수점을 모두 내림하는 메소드이다 ex) Math.floor(2.3) = 2
function solution(n, k) {
let drink = k;
let event = Math.floor(n / 10)
return (n * 12000) + ((drink - event) * 2000);
}
점의 위치 구하기
solution.js
function solution(dot) {
var answer = 0;
return answer;
}
- 좌표가 (+,+)일떄 return 1 (-,+)일떄 return2, (-,-)일떄 return3 (+,-)일때 return4를 출력해아한다.
나의 풀이
function solution(dot) {
if(dot[0] > 0 && dot[1] > 0 ){
return 1
}else if(dot[0] < 0 && dot[1] > 0 ){
return 2
}else if(dot[0] < 0 && dot[1] < 0){
return 3
}else{
return 4
}
}
다른 풀이1
- 삼항연산자를 사용하여 dot[0](x값) > 0 return 1 dot[0](x값) < 0 return 4 : dot[1](y값) > 0 return 2 or 3
function solution(dot) {
return dot[0] > 0 ? dot[1] > 0 ? 1 : 4 : dot[1] > 0 ? 2 : 3;
}
오늘 처음으로 자바스크립트 알고리즘 문제를 풀어봤다. 이제 시작한지 6일째라 정신도 없고 여러가지 정보들이
머리속에서 뒤죽박죽이지만 알고리즘 문제를 차근차근 풀어가면서 머리속에 있는 문법들을 잘 정리 해봐야겠다
자주나오는 parseInt, Math , sort, for문, 배열같이 자주나오는 문법이나 함수들은 외워두는게 좋을 것 같다.
할 일
- 나도코딩 자바스크립트 기본문법 듣기 (변수~객체)
- 제주베이스코딩캠프 자바스크립트 알고리즘 유튜브 보기