C#

[프로그래머스 힌트/답/해석] 피자 나누기2

Guk-blog 2024. 1. 29. 11:20
728x90
반응형

힌트

더보기

피자를 한 판에 6조각씩 나오며 모두 같은 개수를 먹어야 한다

피자를 남기지 않아야 한다(잔반 안됨)

예시)

-6명이면 한 판(6 조각)을 시키면 1조각씩 남김 없이 먹을 수 있다

-8명이면 네 판(24 조각)을 시키면 3조각씩 남김 없이 먹을 수 있다

- (x*n)%6==0 (피자 판 수 * 명 수)를 6으로 나누었을 때 나머지가 0이어야 한다

정답

더보기

LInq를 사용

var divideArray = Enumerable.Range(1, 9).Select(x => x * n);
return divideArray.Where(x => x % 6 == 0).Min() / 6;

재귀함수를 사용

public int solution(int n)
{
    int answer = n / gcd(n, 6);
    return answer;
}
public int gcd(int a, int b)
{
    return a % b == 0 ? b : gcd(b, a % b);
}

해석

더보기
var divideArray = Enumerable.Range(1, 9).Select(x => x * n);

LInq 사용

- divideArray에 1부터 9까지의 숫자를 넣고 select에선 이전에 생성한 값과 n(명수)를 곱해준 값을 저장한다

return divideArray.Where(x => x % 6 == 0).Min() / 6;

- 6으로 나누었을 때 값이 0이 되는 것 중 가장 작은 값을 가져와 6으로 나누어 피자 판의 값을 리턴한다

-> 명수가 6이면 6, 12 18 등의 숫자 중 6을 가져온다

728x90
반응형