주특기 심화 (React) TIL

songhsb·2023년 7월 5일
0

내일배움캠프

목록 보기
45/106

2023.07.05

오늘의 회고

React 강의 완강을 목표로 달리는 중. 아직은 이해가 잘 안 된다. 추 후에 과제를 하며 복습을 하자. 팀원들과 어제 풀어본 프로그래머스 문제를 같이 공유해 보았다. 같은 문제지만 다양한 해결방법이 있어 재밌다.

프로그래머스

피자 나눠 먹기 (2)

문제 설명

머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 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를 곱한 값에 최대공약수를 나눈 값이다.

profile
개발공부!

1개의 댓글

comment-user-thumbnail
2023년 7월 6일

굉장히 성실히 잘 적고 계시는 군요 ?!

답글 달기