피즈 버즈

난이도 쉽게
자주 묻는 질문 블룸버그 게시물에서 Microsoft
조회수 35

문제 이름이 모호해 보일 수 있습니다. Fizz Buzz는 아이들에게 부서에 대해 가르치는 게임입니다. 따라서 별다른 번거 로움없이 주변의 소문을 없앱니다.

문제 정책

3의 배수에 대해 "Fizz"를 인쇄하고 5의 배수에 대해 "Buzz"와 FizzBuzz를 모두 인쇄하는 프로그램을 작성해 보겠습니다.

피즈 버즈
1-21에 대한 FizzBuzz 표시

이것은 기본적인 문제이며 더 비슷할 수 있습니다. 바라 보았다.

접근 방식 -1

브 루트 포스

  • 주어진 숫자 n
    • 1에서 n까지 루프 실행
    • 숫자가 15로 나눌 수있는 경우 FizzBuzz 인쇄
    • Else 숫자가 3으로 나눌 수있는 경우 Fizz 인쇄
    • 그렇지 않으면 숫자는 3으로 나눌 수 있습니다. Print Buzz

짜잔, 우리는 FizzBuzz의 코드를 가지고 있습니다! 코드를 살펴 보겠습니다.

Fizz Buzz 용 자바 코드

class Solution 
{
    public List<String> fizzBuzz(int n) 
    {
    List<String>lisa=new ArrayList<String>();
    for(int i=1;i<n+1;i++)
    {
       if(i%15==0)
           lisa.add("FizzBuzz");
        else if(i%5==0)
            lisa.add("Buzz");
        else if(i%3==0)
            lisa.add("Fizz");
        else
            lisa.add(Integer.toString(i));
    }
    return lisa;
    }
}

Fizz Buzz 용 C ++ 코드

#include<string>
class Solution 
{
public:
    vector<string> fizzBuzz(int n) 
    {
    vector<string>lisa;
    for(int i=1;i<n+1;i++)
    {
       if(i%15==0)
           lisa.push_back("FizzBuzz");
        else if(i%5==0)
            lisa.push_back("Buzz");
        else if(i%3==0)
            lisa.push_back("Fizz");
        else
            lisa.push_back(to_string(i));
    }
    return lisa;
    }
};

복잡성 분석

시간 복잡도 = O (n) 여기서 n은 윙윙 거리는 방식으로 값을 인쇄해야 할 때까지의 숫자입니다.

Space Complexity = O (1) 여기에는 보조 공간을 사용하지 않기 때문입니다.

접근 방식 -2

문자열 연결

이 방법은 런타임에는 도움이되지 않지만 코드 줄을 줄이고 추가 조건에 문제가있는 경우 확실히 도움이됩니다.

독자는 지금 저에게 질문 할 수 있습니다. 추가 조건은 무엇입니까?

FizzBuzz에서 FizzBuzzLizz로 문제를 변경했다고 가정 해 보겠습니다.

  • 3의 배수를 만날 때마다 Fizz를 인쇄하십시오
  • 5의 배수를 볼 때마다 출력 버즈
  • 7의 배수가 나올 때마다 Lizz 인쇄
  • 3과 5의 배수에 대해 FizzBuzz 추가
  • 3과 7의 배수에 대한 FizzLizz
  • 5와 7의 배수를 만나면 BuzzLizz를 인쇄합니다.

if 및 else가 너무 많이 발생하지 않습니까?

탈출 할 수있는 방법이 있습니다.

반복 할 때마다 문자열을 가져와 계속 추가합니다.

  • 1에서 n까지 루프를 실행합니다.
    • 답을 문자열에 저장합니다. ans =”“;
    • 각각에 대해
      • 숫자가 3의 배수 인 경우 문자열에 Fizz를 추가합니다.
      • 숫자가 5의 배수 인 경우 버즈 연결
      • 숫자가 7의 배수 인 경우 Lizz를 문자열에 합산합니다.
      • 따라서 숫자가 3,5 및 7의 배수이면 FizzBuzz Lizz 생성
    • ArrayList 또는 사용한 다른 데이터 구조로 형성된 문자열을 던집니다.

더 나은가요? 코드를 살펴 보겠습니다.

Fizz Buzz 용 자바 코드

class Solution 
{
    public List<String> fizzBuzz(int n) 
    {
    List<String>lisa=new ArrayList<String>();
    for(int i=1;i<n+1;i++)
    {
        String ans=""; 
        if(i%5==0) 
        ans=ans+"Buzz"; 
        if(i%3==0) 
        ans=ans+"Fizz";
        else 
        ans=ans+Integer.toString(i); 
        lisa.add(ans);
    }
    return lisa;
    }
}

Fizz Buzz 용 C ++ 코드

#include<string>
class Solution 
{
public:
    vector<string> fizzBuzz(int n) 
    {
    vector<string>lisa;
    for(int i=1;i<n+1;i++)
    {
       string ans="";
       if(i%5==0)
            ans=ans+"Buzz";
       if(i%3==0)
            ans=ans+"Fizz";
        else
            ans=ans+to_string(i);
        lisa.push_back(ans);
    }
    return lisa;
    }
};

복잡성 분석

위 솔루션의 시간 복잡도 : O (n) 여기서 n은 fizz buzz 방식으로 값을 인쇄해야 할 때까지의 숫자입니다.

위 솔루션의 시간 복잡성 :

참조

Translate »