[Programmers/Lv. 0] 코딩테스트 입문 Day 2 - 사칙연산, 조건문, 배열 (Python)

2023. 2. 15. 21:06Algorithm

1. 두 수의 나눗셈


함수의 매개변수로 주어진 정수 num1, num2를 나눈 값에 1,000을 곱한 후 정수 부분만 return 하라는 문제이다.

(내가 생각한 풀이 과정)

말 그대로 두 값을 나누고, 1000을 곱하고, 정수로 반환시킨다.

 

(코드)

더보기

💡 내 코드

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

 


2. 숫자 비교하기


(문제 설명, 제한사항, 입출력 예)

함수의 매개변수로 들어온 정수 num1, num2가 같으면 1, 다르면 -1을 반환하라.

(내가 생각한 풀이 과정)

당연히 if문을 쓸건데, 파이썬스러운 코드를 활용했다.

 

(코드)

더보기

💡 내 코드

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

 


3. 분수의 덧셈


첫 번째 분자와 분모로 numer1과 denom1, 두 번째 분자와 분모로 numer2, denom2가 주어질 때, 두 분수의 합을 기약 분수로 나타내라.

(내가 생각한 풀이 과정)

분모를 denom1과 denom2를 곱한 값으로 우선 정한다.
이에 따라 분자의 값도 numer1은 denom2를 곱하고 numer2는 denom1을 곱해 두 값을 더해준다. 
이후, 두 함수를 두 분모의 최대공약수(최대 공약수는 math 모듈의 gcd 함수를 이용하는 방법)로 약분을 해주면서 결괏값을 return 한다.

 

(코드)

더보기

💡 내 코드

import math

def solution(numer1, denom1, numer2, denom2):
    numer3, denom3 = numer1*denom2 + numer2*denom1, denom1 * denom2   
    gcd = math.gcd(numer3, denom3)
    
    return [numer3, denom3] if gcd==1 else [numer3/gcd, denom3/gcd]

 

💡 다른 사람의 풀이 코드

분수를 쉽게 계산하게끔 도와주는 fractions 모듈을 활용하는 방법도 있다고 한다.

from fractions import Fraction

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

 


4. 배열 두 배 만들기


numbers 배열이 주어질 때, 각 원소를 두 배한 배열을 반환하라는 문제

(내가 생각한 풀이 과정)

리스트 컴프리헨션(List Comprehension)을 활용해서 문제를 풀었다.

 

(코드)

더보기

💡 내 코드

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

 

💡 다른 사람의 풀이 코드

리스트 컴프리헨션으로 해결할 수 있는 문제는 람다와 map 함수로도 해결할 수 있었다. 

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