2023. 7. 1. 19:12ใCoding Test/Programmers
๐๋ฌธ์ ๋ณด๋ฌ๊ฐ๊ธฐ
๐จ๐ปํ์ด ๊ณผ์
๋ค์ ๋ฌธ์ ์ง๋ฌธ ๋ถ๋ถ์ด ๋ฌด์จ ๋ง์ธ์ง ํท๊ฐ๋ ค, ์ดํดํ๋ ๋ฐ์ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ์ต๋๋ค.
"๋จ, ์ฐ๋ฐ์์ด ๊ทธ๋ํ์ ๊ฐ๋ก์ถ ๊ธธ์ด๋ฅผ ๋ฏธ๋ฆฌ ์ ์ ์๊ธฐ ๋๋ฌธ์
๊ตฌ๊ฐ์ ์์์ ์์ด ์๋ ์ ์, ๊ตฌ๊ฐ์ ๋์ ์์ด ์๋ ์ ์๋ก ํํํฉ๋๋ค.
์ด๋ ๊ฐ๊ฐ ๊บพ์์ ๊ทธ๋ํ๊ฐ ์์ํ๋ ์ ๊ณผ ๋๋๋ ์ ์ x์ขํ์ ๋ํ ์๋์ ์ธ ์คํ์
์ ์๋ฏธํฉ๋๋ค."
๊ตฌํ ์ฐ๋ฐ์์ด์ ๋ง์ง๋ง ์ขํ(์ ์์ ๋ก ๋ณด๋ฉด (5, 1))์ x๊ฐ์ LX๋ผ๊ณ ํ๋ค๋ฉด, ์ฃผ์ด์ง ๊ตฌ๊ฐ [a, b]๋ [0 + a, LX + b]๋ฅผ ์๋ฏธํ๋ ๊ฑฐ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ ์์ ์์ LX๋ 5์ ๋๋ค. (5, 1)์ด ๋ง์ง๋ง ์ฐ๋ฐ์์ด ์ขํ์ด๊ธฐ ๋๋ฌธ์ด์ฃ .
- range๊ฐ [0, 0]์ผ๋ก ์ฃผ์ด์ก๋ค๋ฉด, [0 + 0, 5 + 0]์ด๋ฏ๋ก [0, 5]์ธ ์ ์ฒด ๊ตฌ๊ฐ์ ์๋ฏธํฉ๋๋ค.
- range๊ฐ [0, -1]๋ก ์ฃผ์ด์ก๋ค๋ฉด, [0 + 0, 5 - 1]์ด๋ฏ๋ก [0, 4] ๊ตฌ๊ฐ ๋์ด๋ฅผ ๊ตฌํ๋ฉด ๋ฉ๋๋ค.
- range๊ฐ [2, -3]์ผ๋ก ์ฃผ์ด์ก๋ค๋ฉด, [0 + 2, 5 - 3]์ด๋ฏ๋ก [2, 2] ๊ตฌ๊ฐ ๋์ด๋ฅผ ๊ตฌํ๋ฉด ๋ฉ๋๋ค.
- range๊ฐ [3, -3]์ผ๋ก ์ฃผ์ด์ก๋ค๋ฉด, [0 + 3, 5 - 3]์ด๋ฏ๋ก [3, 2]์ ๋๋ค. ์๋ชป๋ ๊ตฌ๊ฐ์ด๋ฏ๋ก -1์ ๋๋ค.
x๊ฐ ์ค์ ์์ญ์ด ์๋ ์ ์ ์์ญ์ด๊ธฐ์, ์ ์ ๋ถ ๋์ด๋ ์ฌ๋ค๋ฆฌ๊ผด ํํ๋ก ๋ํ๋๊ฒ ๋ฉ๋๋ค.
x๊ฐ 0๋ถํฐ ์ฐ๋ฐ์์ด์ ๋ง์ง๋ง x๊ฐ๊น์ง์ ๊ฐ ์ฌ๋ค๋ฆฌ๊ผด ๋์ด๋ฅผ ๋์ ํด์ ์ ์ฅํ ํ, ์ฃผ์ด์ง range์ ์ํด ๊ตฌํด์ง ๊ตฌ๊ฐ [a, b]์ ๋ํด, \( f(b) - (a)\)์ ๋์ด๋ฅผ ๊ตฌํด์ฃผ๋ฉด ๋ฉ๋๋ค.
โ๏ธ์์ค ์ฝ๋ ๋ฐ ๊ฒฐ๊ณผ
#include <vector>
using namespace std;
vector<double> solution(int k, vector<vector<int>> ranges) {
vector<double> cummulativeSum { 0.0 };
while (true) {
int nextK = (k % 2 == 0) ? k / 2 : (k * 3) + 1;
double area = static_cast<double>(k + nextK) / 2;
cummulativeSum.emplace_back(cummulativeSum.back() + area);
k = nextK;
if (k == 1)
break;
}
vector<double> answer;
for (const auto& range : ranges) {
int leftX = range[0], rightX = cummulativeSum.size() - 1 + range[1];
if (rightX < leftX) {
answer.emplace_back(-1.0);
continue;
}
double area = cummulativeSum[rightX] - cummulativeSum[leftX];
answer.emplace_back(area);
}
return answer;
}
'Coding Test > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] Lv2. ์ซ์ ๋ธ๋ก | C++ (0) | 2023.07.04 |
---|---|
[Programmers] Lv2. ๋ ์ ์ฌ์ด์ ์ ์ ์ | C++ (0) | 2023.07.03 |
[Programmers] Lv2. ๋ํ์ค ๊ฒ์ | C++ (0) | 2023.07.01 |
[Programmers] Lv2. ํ ์ด๋ธ ํด์ ํจ์ | C++ (0) | 2023.07.01 |
[Programmers] Lv2. ๋ฌธ์์ด ์์ถ | C++ (0) | 2023.06.30 |