코딩테스트 입문 Day 2 사칙연산, 조건문, 배열

  • 두 수의 나눗셈
  • 숫자 비교하기
  • 분수의 덧셈
  • 배열 두 배 만들기

1. 두 수의 나눗셈

정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
👉 문제 보러가기

(1) 코드 작성

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

# version 2 : 소수에 int 취하면 소수점 아래는 버림
def solution(num1, num2):
    return int((num1/num2)*1000)


2. 숫자 비교하기

정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.
👉 문제 보러가기

(1) 코드 작성

# version 1 : 친절한 코드
def solution(num1, num2):
    answer = None
    # 두 수가 같으면 1 반환, 그 외엔 -1 반환
    if num1 == num2:
        answer = 1
    else:
        answer = -1
    
    return answer

# version 2 : 한줄 코드
def solution(num1, num2):
    return 1 if num1==num2 else -1


3. 분수의 덧셈

첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
👉 문제 보러가기

(1) 코드 작성

def solution(denum1, num1, denum2, num2):
    # 최소공배수 구하기 (예: 2, 4 => 2 * 1* 2 == 4, [2, 3, 5, 7, 11, 13, ... 소수])
    # 두 분수를 합치는 과정(분자, 분모 따로 계산)
    r_num = num1 * num2
    r_denum = denum1*num2 + denum2*num1

    # 분자를 기준으로 값을 1씩 내리면서 약분할 수 있는 최대값을 찾음
    for i in range(r_denum, 1, -1):
        if r_num%i == 0 and r_denum%i == 0:
            return [r_denum//i, r_num//i]
    
    return [r_denum, r_num]


4. 배열 두 배 만들기

정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
👉 문제 보러가기

(1) 코드 작성

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


문제 회고

  • 1번 문제 : 실수에 int를 취하면 소수점 아래는 버려지고 정수부분만 남게 됨
  • 2번 문제 : ver2에서 if문 만족 시 앞에 있는 1 반환, if문 만족하지 않을 시 else 값 반환
  • 3번 문제 : 최소공배수를 구할 때, math.lcm을 이용하고싶었지만 지원하지 않아 사용하지 못함
  • 4번 문제 : 리스트 컴프리헨션으로 한줄 코드 작성하였음


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기