반응형

프로그래머스 코딩테스트 입문 레벨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 |
댓글