반응형
프로그래머스 코딩테스트 입문 레벨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 함수를 이용
반응형
'🖥️ 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv0 - Day1 : 사칙연산 (0) | 2022.11.05 |
---|---|
[프로그래머스] Lv1 - 과일로 만든 아이스크림 고르기 (0) | 2022.11.03 |
[프로그래머스] Lv2 - 조이스틱 (0) | 2022.10.14 |
[프로그래머스] PCCP 모의고사 - 유전법칙 (2) | 2022.10.14 |
[프로그래머스] Lv2 - 카펫 (0) | 2022.10.10 |
댓글