[프로그래머스 C++] 숫자 블록
[프로그래머스 C++] 숫자 블록
https://school.programmers.co.kr/learn/courses/30/lessons/12923
해결전략
구현
처음 시도한 코드
#include <vector>
using namespace std;
long long Cal(long long k)
{
for(int i = 2; i * i < k; i++)
{
if(k % i == 0){
return k / i;
}
}
return 1;
}
vector<int> solution(long long begin, long long end) {
vector<int> answer(end+1, 0);
for(long long i = begin; i <= end; i++){
answer[i] = Cal(i);
}
return answer;
}
vector<int> answer( end + 1, 0 );
- 위와 같이 vector<int> answer 배열을 만들고 대입하는 방식을 사용하면 연산을 2번 해야 한다.
- 그래서 미리 만들고 대입하는 방식이 아닌 push_back이나 emplace_back으로 계산된 값을 바로 넣어주어 생성하는게 시간을 줄이는 방법이다.
정답 코드
#include <vector>
using namespace std;
long long Cal(long long k)
{
long long result = 1;
for(long long i = 2; i * i <= k; i++)
{
if(k % i == 0){
result = i;
if (k / i <= 10000000)
{
result = k / i;
break;
}
}
}
return result;
}
vector<int> solution(long long begin, long long end) {
vector<int> answer;
for(long long i = begin; i <= end; i++)
{
if (i == 1) answer.emplace_back(0);
else answer.emplace_back(Cal(i));
}
return answer;
}
'⭐ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] 등굣길 (0) | 2024.04.02 |
---|---|
[프로그래머스 C++] 조이스틱 (0) | 2024.04.01 |
[프로그래머스 C++] 혼자서 하는 틱택토 (1) | 2024.03.22 |
[프로그래머스 C++] 가장 긴 팰린드롬 (0) | 2024.03.20 |
[프로그래머스 C++] 이모티콘 할인행사 (0) | 2024.03.18 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 C++] 등굣길
[프로그래머스 C++] 등굣길
2024.04.02 -
[프로그래머스 C++] 조이스틱
[프로그래머스 C++] 조이스틱
2024.04.01 -
[프로그래머스 C++] 혼자서 하는 틱택토
[프로그래머스 C++] 혼자서 하는 틱택토
2024.03.22 -
[프로그래머스 C++] 가장 긴 팰린드롬
[프로그래머스 C++] 가장 긴 팰린드롬
2024.03.20