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/
풀 때 어려웠던 점 또는 느낀점 :
백터에 새로운 데이터를 추가할 때 백터의 사이즈를 미리 초기화 할때
지정해주지 않으면 인덱싱으로 바로 접근할 수 없다.
까먹고 그냥 했다 오류가 났다.
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
반응형
'Problem Solving' 카테고리의 다른 글
[C++] [백준 2941] 크로아티아 알파벳 (0) | 2021.07.25 |
---|---|
[C++] [LeetCode 125] Valid Palindrome (pps 5-6) (0) | 2021.07.22 |
[C++] [LeetCode 1154] Day of the Year (pps 5-4) (0) | 2021.07.18 |
[JAVA] [백준 5355] 화성 수학 (pps 5-2) (0) | 2021.07.18 |
[C++] [백준 2163] 초콜릿 자르기 (pps 5-1) (0) | 2021.07.18 |
댓글