2023.07.05
React 강의 완강을 목표로 달리는 중. 아직은 이해가 잘 안 된다. 추 후에 과제를 하며 복습을 하자. 팀원들과 어제 풀어본 프로그래머스 문제를 같이 공유해 보았다. 같은 문제지만 다양한 해결방법이 있어 재밌다.
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
lv.0단계 문제이지만 나에게는 조금 어려웠었다.
처음에는 최대공배수를 이용하는 방법으로 하려했다. 그러나 시간복잡도가 최악이어서 테스트 통과가 안 됐다. 결국 다른 사람의 풀이를 보니 너무 간단하다! 왜 이 생각을 못했지?
피자를 인원 수(n)로 나눈 나머지 값이 0이 될 때 까지 피자 주문을 하자.
function solution(n) {
let answer = 0;
let pizza = 6;
for (order=1;pizza%n!==0;order++) {
pizza += 6;
}
return answer = order;
}
최대공배수를 구하다 알게된 알고리즘 유클리드 호제법
유클리드 호제법
2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다.
이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다.
최대공배수는 a와 b를 곱한 값에 최대공약수를 나눈 값이다.
굉장히 성실히 잘 적고 계시는 군요 ?!