[코딩테스트] 풀이 1일차

seungjin Kim·2023년 3월 13일

알고리즘

목록 보기
1/2
post-thumbnail

프로그래머스 스쿨 코딩테스트 : 두 수의 합


1. 문제

정수 num1과 num2가 주어질 때, num1과 num2의 합을 return하도록 soltuion 함수를 완성해주세요.

2. 나의 풀이

❶ 함수 정규식을 이용한 풀이

// 함수 정규식
function solution(num1, num2) {
    const result = num1 + num2
    return result;
}

❷ 익명함수를 이용한 풀이

// 익명함수
let solution = function(a, b){
    const result = a + b
    return result;
}

solution();

❸ 화살표 함수를 이용한 풀이

// 화살표 함수
let solution = (a,b) => a + b;

solution();

3. 다른 풀이

num1num2의 값의 범위를 다중조건으로 지정

function solution(num1, num2) {    
    if(-50000<=num1 && num1<=50000){
        if(-50000<=num2 && num2<=50000){
            const answer = num1 + num2;

            return answer;
        }
    }
}

프로그래머스 스쿨 코딩테스트 : 두 수의 차


1. 문제

정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.

2. 나의 풀이

❶ 함수 정규식을 이용한 풀이

//정규식
function solution(num1, num2) {
    result = num1 - num2
    return result;
}

❷ 익명함수를 이용한 풀이

//익명함수
const solution = function(a,b) {
    const result = a-b
    return result;
}

solution();

❸ 화살표 함수를 이용한 풀이

const solution = (a,b) => {
    const result = a - b
    return result;
}

solution();

프로그래머스 스쿨 코딩테스트 : 두 수의 곱


1. 문제

정수 num1, num2가 매개변수 주어집니다. num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요.

2. 나의 풀이

❶ 함수 정규식을 이용한 풀이

//정규식
function solution(num1, num2) {
    const result = num1 * num2
    return result;
}

❷ 익명함수를 이용한 풀이

//익명함수
const solution = function(a,b) {
    const result = a*b
    return result;
}

solution();

❸ 화살표 함수를 이용한 풀이

const solution = (a,b) => {
    const result = a * b
    return result;
}

solution();

프로그래머스 스쿨 코딩테스트 : 몫 구하기


1. 문제

정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.

2. 나의 풀이

parseInt: 문자열로 변환 > 정수를 반환 : 문자열에서 숫자를 추출하는 용도.
Math.floor : 작은 정수 중에서 가장 가까운 큰 수
Math.trunc: 몫을 구하기 위해 함수를 이용하여, 소숫점 이하는 버리게 된다. (반올림X)

❶ 함수 정규식을 이용한 풀이

//정규식
function solution(num1, num2) {
    const result = Math.trunc(num1 / num2)
    return result;
}

❷ 익명함수를 이용한 풀이

//익명함수
function solution(num1, num2) {
    const result = Math.trunc(num1 / num2)
    return result;
}
solution();

❸ 화살표 함수를 이용한 풀이

const solution = (a,b) => {
    const result = Math.trunc(a/b)
    return result; 
}

solution();

프로그래머스 스쿨 코딩테스트 : 나머지 구하기


1. 문제

정수 num1, num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.

2. 나의 풀이

Math.trunc: 몫을 구하기 위해 함수를 이용하여, 소숫점 이하는 버리게 된다. (반올림X)

❶ 함수 정규식을 이용한 풀이

//정규식
function solution(num1, num2) {
    const result = (num1 % num2)
    return result
}

프로그래머스 스쿨 코딩테스트 : 나이 출력


1. 문제

머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 나이 age가 주어질 때, 2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요.

2. 나의 풀이

  1. 나이를 연도로 변환해라 : ( 2022년 - age ) + 1
  2. 우리가 나이를 세는 것과 동일

❶ 함수 정규식을 이용한 풀이

function solution(age) {
    const birth = (2022 - age) + 1;
    return birth;
}

❷ 화살표 함수를 이용한 풀이

const solution = (age) => {
    const birth = (2022 - age) +1;
    return birth;
}
solution();

3. 다른 풀이

  • Date() : 날짜를 저장하거나 / 날짜와 관련된 메서드 저장
  • getFullYear() : 연도 (네 자릿수)를 반환합니다.

1.현재의 날짜를 출력 가능

let now = new Date();
alert( now ); // 현재 날짜 및 시간이 출력됨

2.날짜의 구성요소 얻기

  • getFullYear()
    연도(네 자릿수)를 반환합니다.
  • getMonth()
    월을 반환합니다(0 이상 11 이하).
  • getDate()
    일을 반환합니다(1 이상 31 이하). 어! 그런데 메서드 이름이 뭔가 이상하네요.
  • getHours(), getMinutes(), getSeconds(), getMilliseconds()
    시, 분, 초, 밀리초를 반환합니다.
//getFullYear에서 2023년이 출력된다.
function solutin(age) {
	return new Date().getFullYear() - age + 1;
}

프로그래머스 스쿨 코딩테스트 : 각도기


1. 문제

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

2. 나의 풀이

  1. 다중 조건을 이용한 각도계산

❶ 함수 정규식을 이용한 풀이

function solution(angle) {
    if (angle > 0 && angle < 90) {
        return 1;  
    } else if (angle === 90) { 
        return 2;
    } else if (angle > 90 && angle < 180) {
        return 3; 
    } else if (angle === 180) {
        return 4
    } else {
        console.log("각도를 다시 입력해주세요.")
    }
}

3. 다른 풀이

❶ 삼항연산자를 이용한 풀이
조금 더 코드가 깔끔해진다.
하지만 190도인 경우에도 4가 나와서 이 코드는 '예외처리' 에서 100% 정확하지는 않는 것 같다.

function solution(angle) {
	return angle < 90 ? 1 : angle === 90 ? 2 : angle < 180 ? 3: 4;
}

❷ filter를 이용한 풀이

  • filter() 메서드는 주어진 함수의 테스트를 통과(true)하는 모든 요소를 모아 새로운 배열로 반환합니다.
  • length를 통해서 [0,90,91,180] 가 배열값이 1,2,3,4 값을 갖게 했습니다.
  • 배열의 길이 = length
function solution(angle){
	return [0,90,91,180].filter(x => angle>=x).length;
}

프로그래머스 스쿨 코딩테스트 : 짝수의 합


1. 문제

정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

2. 나의 풀이

  1. 다중 조건을 이용한 각도계산

❶ 함수 정규식을 이용한 풀이

  • 초큼 어려웠다..
  • n 이하의 짝수를 어떻게 구하지? : 반복문
  • 수들을 어떻게 담지 ? : 빈 객체 result 생성후 반복문
  • 그들의 합은 : result += i를 통해 조건이 통하가면 더해가는 방식
function solution(n) {
    let result = 0; 
    for (let i = 0; i <= n; i++) {
        if (i % 2 === 0) result += i
    }
    return result
}

3. 다른 풀이

❶ 수열 공식을 이용한 풀이

  1. n이하의 짝수의 합의 패턴을 찾아라.

(n/2)*(n+1)

1 = 1 > 1 > 1*0
2 = 2 > 2 > 2*1
3 = 2 > 2 > 2*1
4 = 2,4 > 6 > 3*2
5 = 2,4 > 6 > 3*2
6 = 2,4,6 > 12 > 4*3
7 = 2,4,6 > 12 > 4*3
8 = 2,4,6,8 > 20 > 5*4
9 = 2,4,6,8 > 20 > 5*4
10 = 2,4,6,8,10 > 30 > 6*5

  1. 함수에 그대로 대입
function solution(n) {
	var half = Math.floor(n/2);
	return half*(half+1)
}
profile
코드 한 줄

0개의 댓글