본문 바로가기
🖥️ 문제 풀이/프로그래머스

[프로그래머스] Lv0 - Day2 : 사칙연산, 조건문, 배열

by 뒬탕 2022. 11. 5.
반응형

프로그래머스 해답 및 해설

프로그래머스 코딩테스트 입문 레벨0 문제 해결법

 

문제1 :  두 수의 나눗셈

바로가기

두 수를 나눈 값에 1000을 곱한 후 정수부분을 출력

 

파이썬 (Python)

def solution(num1, num2):
    return num1*1000//num2

 

자바스크립트 (Javascript)

function solution(num1, num2) {
    return parseInt(num1*1000/num2);
}

 

function solution(num1, num2) {
    return num1*1000/num2<<0;
}

 

문제2 : 숫자 비교하기

바로가기

두 수를 비교해 같으면 1, 다르면 -1을 출력

 

파이썬 (Python)

일반적인 풀이

def solution(num1, num2):
    if num1 == num2:
        return 1
    return -1

if문을 이용, 같을 때는 1, 아닐 때는 -1을 출력

 

def solution(num1, num2):
    return 1 if num1 == num2 else -1

다음과 같이 if문을 한 줄로 써줘도 된다.

 

특수한 풀이

def solution(num1, num2):
    return ((num1 == num2)-0.5)*2

숫자와 계산시 True는 1, False는 0으로 계산된다는 걸 이용한 풀이

 

자바스크립트 (Javascript)

function solution(num1, num2) {
    if (num1 === num2) {
        return 1;
    }
    return -1;
}

 

function solution(num1, num2) {
    return num1 === num2? 1 : -1;
}

 

function solution(num1, num2) {
    return ((num1 == num2)-0.5)*2;
}

 

문제3 : 분수의 덧셈

바로가기

두 분수의 분자와 분모 값이 순서대로 들어간 denum1, num1, denum2, num2이 입력됨. 이 두 분수의 합을 기약분수로 나타낸 것을 [분자, 분모] 형태로 출력

 

파이썬 (Python)

일반적인 풀이

def solution(denum1, num1, denum2, num2):
    def gcd(a, b):
        while b > 0:
            a, b = b, a%b
        return a    
    
    denum = denum1*num2 + denum2*num1
    num = num1*num2
    gcd = gcd(denum, num)
    
    return [denum//gcd, num//gcd]

유클리드 호제법을 이용하여 최대공약수를 구하는 함수를 만들어둠. 그리고 이걸 이용하여 기약분수 형태로 만들어줌

 

라이브러리를 이용한 풀이

import math

def solution(denum1, num1, denum2, num2):
    denum = denum1 * num2 + denum2 * num1
    num = num1 * num2
    gcd = math.gcd(denum, num)
    return [denum//gcd, num//gcd]

math 라이브러리

 

from fractions import Fraction

def solution(denum1, num1, denum2, num2):
    answer = Fraction(denum1, num1) + Fraction(denum2, num2)
    return [answer.numerator, answer.denominator]

분수 계산을 하는 fraction 라이브러리

 

자바스크립트 (Javascript)

function solution(denum1, num1, denum2, num2) {
    function gcd(a, b) {
        while (b != 0) {
            [a, b] = [b, a%b];
            }
        return a;
        }
    
    let denum = denum1*num2 + denum2*num1;
    let num = num1*num2;
    let g = gcd(denum, num);
    
    return [denum/g, num/g];
}

 

function gcd(a, b){
    return (a%b)? gcd(b, a%b) : b;
}

재귀를 이용하여 이렇게 이쁘게 표현한 경우도 있었다

 

문제4 : 배열 두배 만들기

바로가기

정수 배열이 주어지면 각 원소들의 값을 2배로 한 새로운 배열을 출력

 

파이썬 (Python)

def solution(numbers):
    answer = []
    for x in numbers:
        answer.append(x*2)
    return answer

for문을 이용

 

def solution(numbers):
    return [x*2 for x in numbers]

내부에서 for문을 이용

 

def solution(numbers):
    return [*map(lambda x: x*2, numbers)]

map 함수를 이용

 

자바스크립트 (Javascript)

function solution(numbers) {
    let answer = [];
    for (let x of numbers) {
        answer.push(2*x)
    }
    return answer;
}

for문을 이용

 

function solution(numbers) {
    return numbers.map(i=>i*2);
}

map 함수를 이용

 

function solution(numbers) {
    let answer = [];
    numbers.forEach(i=>answer.push(i*2))
    return answer;
}

forEach 함수를 이용

 

function solution(numbers) {
    return numbers.reduce((acc, cur) => [...acc, cur * 2], []);
}

reduce 함수를 이용

반응형

댓글