본문 바로가기
Problem Solving

[C++] [LeetCode 412] Fizz Buzz (pps 5-5)

by tls1107 2021. 7. 22.
728x90
반응형


문제 풀기 전 생각 : 

/*
반복문을 돌린다.
반복문을 돌릴때 사용하는 변수 i를 사용한다.
i 는 1로 시작한다. 이유는 나머지 계산할 때 가독성을 위해서
i가 3과 5로 나누어 떨어질 때 FizzBuzz 를 백터에 추가하고 
3으로만 나누어 떨어지면 Fizz 를 백터에 추가한다.
5로만 나누어 떨어지면 Buzz 를 백터에 추가하고
위의 경우들에 해당하지 않는다면 그냥 i를 추가한다.
*/

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

https://leetcode.com/problems/fizz-buzz/

 

Fizz Buzz - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com


풀 때 어려웠던 점 또는 느낀점 :

백터에 새로운 데이터를 추가할 때 백터의 사이즈를 미리 초기화 할때

지정해주지 않으면 인덱싱으로 바로 접근할 수 없다.

까먹고 그냥 했다 오류가 났다.

push_back 메소드를 사용해서 추가해야만 한다.

까먹지 말자!

아니면 뭐 미리 사이즈 정해주던가.


개선방안 :

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

위의 코드는 3과 5로 나누어떨어지는지 판별하는 것을

15로 나누어 보는것으로 대체했다. 좋은 생각인것 같다.

728x90
반응형

댓글