[프로그래머스 Python] 코딩테스트 입문 Day 2 - 사칙연산, 조건문, 배열
코딩테스트 입문 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번 문제 : 리스트 컴프리헨션으로 한줄 코드 작성하였음
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기