๐Ÿš€ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด ๋งŒ๋“ค๊ธฐ: C++์˜ ๋งˆ๋ฒ•๊ฐ™์€ ๊ธฐ๋Šฅ! ๐ŸŽฉโœจ

์ฝ˜ํ…์ธ  ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ - ๐Ÿš€ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด ๋งŒ๋“ค๊ธฐ: C++์˜ ๋งˆ๋ฒ•๊ฐ™์€ ๊ธฐ๋Šฅ! ๐ŸŽฉโœจ

 

 

์•ˆ๋…•ํ•˜์„ธ์š”, ์—ฌ๋Ÿฌ๋ถ„! ์˜ค๋Š˜์€ C++์˜ ์ดˆ๊ฐ•๋ ฅ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ธ '์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด'์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฑฐ์˜ˆ์š”. ์ด๊ฑฐ ์ง„์งœ ๋Œ€๋ฐ•์ธ ๊ฑฐ ์•„์‹œ์ฃ ? ใ…‹ใ…‹ใ…‹ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณ„์˜ '์•„๋ฐ”ํƒ€ ๋ฌผ์˜ ๊ธธ' ๊ธ‰์œผ๋กœ ํ˜์‹ ์ ์ธ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์–ด์š”! ๐Ÿ˜Ž

์šฐ๋ฆฌ๊ฐ€ ํ‰์†Œ์— ์ฝ”๋”ฉํ•  ๋•Œ ์ˆซ์ž๋‚˜ ๋ฌธ์ž์—ด ๊ฐ™์€ ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ž–์•„์š”? ๊ทผ๋ฐ ์ด๋Ÿฐ ๋ฆฌํ„ฐ๋Ÿด๋“ค, ์ข€ ๋” ์šฐ๋ฆฌ ์ž…๋ง›์— ๋งž๊ฒŒ ์ปค์Šคํ…€ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ผ๋งˆ๋‚˜ ์ข‹์„๊นŒ์š”? ๊ทธ๊ฒŒ ๋ฐ”๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์ด์—์š”! ๐ŸŽ‰

์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์˜ ๋งˆ๋ฒ• ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์˜ ๋งˆ๋ฒ• ์ผ๋ฐ˜ ๋ฆฌํ„ฐ๋Ÿด ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด ์ฝ”๋“œ์˜ ํ‘œํ˜„๋ ฅ UP! ๊ฐ€๋…์„ฑ UP!

์ž, ์ด์ œ๋ถ€ํ„ฐ ์šฐ๋ฆฌ๋งŒ์˜ ํŠน๋ณ„ํ•œ ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค์–ด๋ณผ ๊ฑฐ์˜ˆ์š”. ๋งˆ์น˜ ํ•ด๋ฆฌํฌํ„ฐ๊ฐ€ ๋งˆ๋ฒ• ์ฃผ๋ฌธ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”! ๐Ÿง™โ€โ™‚๏ธ ๊ทผ๋ฐ ์ด๊ฒŒ ์™œ ์ค‘์š”ํ•˜๋ƒ๊ณ ์š”? ์Œ... ์žฌ๋Šฅ๋„ท์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠœํ„ฐ๋ง ์žฌ๋Šฅ์„ ๊ณต์œ ํ•˜๋Š” ๋ถ„๋“ค์ด๋ผ๋ฉด ๊ผญ ์•Œ์•„์•ผ ํ•  ์Šคํ‚ฌ์ด์—์š”. ํ•™์ƒ๋“ค์—๊ฒŒ ์ด๋Ÿฐ ๊ฟ€ํŒ์„ ์•Œ๋ ค์ฃผ๋ฉด ์™„์ „ ์—„์ง€์ฒ™ ๐Ÿ‘ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฑฐ๋“ ์š”!

๊ทธ๋Ÿผ ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ณผ๊นŒ์š”? ๋ ˆ์ธ ๊ณ ~! ๐Ÿƒโ€โ™‚๏ธ๐Ÿ’จ

๐Ÿง ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์ด ๋ญ์•ผ?

์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์€ C++11๋ถ€ํ„ฐ ๋„์ž…๋œ ๊ฐœ๋…์ด์—์š”. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ, ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๋ฆฌํ„ฐ๋Ÿด์˜ ์˜๋ฏธ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฑฐ์ฃ . ์˜ˆ๋ฅผ ๋“ค์–ด, ํ‚ฌ๋กœ๊ทธ๋žจ์„ ๋‚˜ํƒ€๋‚ด๋Š” 'kg'์ด๋‚˜ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” 'h' ๊ฐ™์€ ๊ฑธ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ” ๋ฆฌํ„ฐ๋Ÿด(Literal)์ด๋ž€?
ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ง์ ‘ ํ‘œํ˜„๋˜๋Š” ๊ฐ’์„ ๋งํ•ด์š”. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ •์ˆ˜ 5, ์‹ค์ˆ˜ 3.14, ๋ฌธ์ž์—ด "Hello" ๊ฐ™์€ ๊ฒƒ๋“ค์ด์ฃ .

๊ทผ๋ฐ ์™œ ์ด๋Ÿฐ ๊ฒŒ ํ•„์š”ํ• ๊นŒ์š”? ๐Ÿค” ์˜ˆ๋ฅผ ๋“ค์–ด๋ณผ๊ฒŒ์š”:


int distance = 5; // 5๊ฐ€ ๋ญ์ง€? ๋ฏธํ„ฐ? ํ‚ฌ๋กœ๋ฏธํ„ฐ? ๋งˆ์ผ?

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด 5๊ฐ€ ๋ฌด์Šจ ๋‹จ์œ„์ธ์ง€ ์•Œ๊ธฐ ์–ด๋ ต์ž–์•„์š”? ๊ทธ๋ž˜์„œ ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด ์–ด๋–จ๊นŒ์š”?


int distance = 5_km; // ์•„ํ•˜! 5ํ‚ฌ๋กœ๋ฏธํ„ฐ๊ตฌ๋‚˜!

ํ›จ์”ฌ ๋ช…ํ™•ํ•˜์ฃ ? ์ด๊ฒŒ ๋ฐ”๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์˜ ํž˜์ด์—์š”! ๐Ÿ‘Š

์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์˜ ์žฅ์  ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์˜ ์žฅ์  Before int time = 3600; (3600์ด ๋ญ˜ ์˜๋ฏธํ•˜๋Š”์ง€ ๋ชจํ˜ธํ•จ) After int time = 1_hour; (๋ช…ํ™•ํ•˜๊ฒŒ 1์‹œ๊ฐ„์„ ์˜๋ฏธํ•จ)

์ด์ œ ์ข€ ๊ฐ์ด ์˜ค์‹œ๋‚˜์š”? ใ…Žใ…Ž ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๋” ์ฝ๊ธฐ ์‰ฌ์›Œ์ง€๊ณ , ์‹ค์ˆ˜ํ•  ํ™•๋ฅ ๋„ ์ค„์–ด๋“ค์–ด์š”. ๋งˆ์น˜ ์ฝ”๋“œ์— ์ฃผ์„์„ ๋‹ค๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์˜๋ฏธ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์ฃ . ๐Ÿ‘€

๊ทธ๋Ÿผ ์ด์ œ ์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ ๋งˆ๋ฒ• ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณผ๊นŒ์š”? ๐Ÿง™โ€โ™‚๏ธโœจ

๐Ÿ› ๏ธ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด ๋งŒ๋“ค๊ธฐ: ๊ธฐ๋ณธํŽธ

์ž, ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค์–ด๋ณผ ๊ฑฐ์˜ˆ์š”. ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ•๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด๋ณผ๊ฒŒ์š”!

๐Ÿ“Œ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•
์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์€ '_'(์–ธ๋”์Šค์ฝ”์–ด)๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„์œผ๋กœ ์ •์˜ํ•ด์š”.

์˜ˆ๋ฅผ ๋“ค์–ด, ํ‚ฌ๋กœ๋ฏธํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค์–ด๋ณผ๊นŒ์š”?


#include <iostream>

long double operator"" _km(long double x) {
    return x * 1000.0; // ํ‚ฌ๋กœ๋ฏธํ„ฐ๋ฅผ ๋ฏธํ„ฐ๋กœ ๋ณ€ํ™˜
}

int main() {
    auto distance = 5.5_km;
    std::cout << "๊ฑฐ๋ฆฌ: " << distance << "m" << std::endl;
    return 0;
}

์šฐ์™€~ ์ด์ œ 5.5_km๋ผ๊ณ  ์“ฐ๋ฉด ์ž๋™์œผ๋กœ ๋ฏธํ„ฐ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ฑฐ์˜ˆ์š”! ๐Ÿ˜ฒ

ํ‚ฌ๋กœ๋ฏธํ„ฐ๋ฅผ ๋ฏธํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋งˆ๋ฒ• ํ‚ฌ๋กœ๋ฏธํ„ฐ๋ฅผ ๋ฏธํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋งˆ๋ฒ• 5.5_km ๋ณ€ํ™˜ ๋งˆ๋ฒ• โœจ 5500m

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฑฐ๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ํ›จ์”ฌ ์ง๊ด€์ ์ด๊ณ  ์‹ค์ˆ˜ํ•  ํ™•๋ฅ ๋„ ์ค„์–ด๋“ค๊ฒ ์ฃ ? ๐Ÿ‘

๊ทผ๋ฐ ์ž ๊น, ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์ด ์žˆ์–ด์š”!

โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ
์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด ํ•จ์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ์ „์—ญ ๋ฒ”์œ„์— ์ •์˜ํ•ด์•ผ ํ•ด์š”. ํด๋ž˜์Šค๋‚˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์•ˆ์— ์ •์˜ํ•˜๋ฉด ์•ˆ ๋ผ์š”!

์ž, ์ด์ œ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•˜์œผ๋‹ˆ ์ข€ ๋” ๋ณต์žกํ•œ ์˜ˆ์ œ๋กœ ๋„˜์–ด๊ฐ€๋ณผ๊นŒ์š”? ๐Ÿƒโ€โ™€๏ธ๐Ÿ’จ

๐ŸŽจ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด ๋งŒ๋“ค๊ธฐ: ์‘์šฉํŽธ

์ด๋ฒˆ์—๋Š” ์ข€ ๋” ์‹ค์šฉ์ ์ธ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค์–ด๋ณผ๊ฒŒ์š”. ์‹œ๊ฐ„์„ ๋‹ค๋ฃจ๋Š” ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค์–ด๋ณผ๊นŒ์š”? ๐Ÿ•ฐ๏ธ


#include <iostream>
#include <chrono>

using namespace std::chrono_literals;

class Duration {
    std::chrono::seconds value;
public:
    constexpr Duration(std::chrono::seconds s) : value(s) {}
    
    auto hours() const { return std::chrono::duration_cast<std::chrono::hours>(value).count(); }
    auto minutes() const { return std::chrono::duration_cast<std::chrono::minutes>(value).count() % 60; }
    auto seconds() const { return value.count() % 60; }
};

constexpr Duration operator"" _h(unsigned long long hours) {
    return Duration(std::chrono::seconds(hours * 3600));
}

constexpr Duration operator"" _min(unsigned long long minutes) {
    return Duration(std::chrono::seconds(minutes * 60));
}

constexpr Duration operator"" _s(unsigned long long seconds) {
    return Duration(std::chrono::seconds(seconds));
}

int main() {
    auto time = 2_h + 30_min + 45_s;
    std::cout << time.hours() << "์‹œ๊ฐ„ " << time.minutes() << "๋ถ„ " << time.seconds() << "์ดˆ" << std::endl;
    return 0;
}

์šฐ์™€~ ์ด์ œ ์‹œ๊ฐ„์„ ์ •๋ง ์ง๊ด€์ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋์–ด์š”! ๐Ÿ˜

์‹œ๊ฐ„ ๋ณ€ํ™˜์˜ ๋งˆ๋ฒ• ์‹œ๊ฐ„ ๋ณ€ํ™˜์˜ ๋งˆ๋ฒ• 2_h 30_min 45_s 2์‹œ๊ฐ„ 30๋ถ„ 45์ดˆ

์ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ„์„ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ๋Š” ๊ฒƒ๋„ ์•„์ฃผ ์‰ฌ์›Œ์ ธ์š”. ๋งˆ์น˜ ์šฐ๋ฆฌ๊ฐ€ ์ผ์ƒ์—์„œ ์‹œ๊ฐ„์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์ฃ . ๐Ÿ‘Œ

์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ํ™œ์šฉํ•˜๋ฉด, ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋ผ์š”. ํŠนํžˆ ๋‹จ์œ„๋ฅผ ๋‹ค๋ฃจ๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ์ •๋ง ์œ ์šฉํ•˜๋‹ต๋‹ˆ๋‹ค! ๐Ÿš€

๐Ÿ’ก Tip
์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค ๋•Œ๋Š” ํ•ญ์ƒ ๊ทธ ์˜๋ฏธ๊ฐ€ ๋ช…ํ™•ํ•˜๊ณ  ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•ด์š”. ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ดค์„ ๋•Œ๋„ ๋ฐ”๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜์ฃ !

์ž, ์ด์ œ ์šฐ๋ฆฌ๋งŒ์˜ ํŠน๋ณ„ํ•œ ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋์–ด์š”. ์ด๊ฑธ ํ™œ์šฉํ•˜๋ฉด ์ •๋ง ๋งŽ์€ ๊ฑธ ํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ ? ์˜ˆ๋ฅผ ๋“ค์–ด, ์žฌ๋Šฅ๋„ท์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠœํ„ฐ๋ง์„ ํ•  ๋•Œ ์ด๋Ÿฐ ๊ฑธ ๊ฐ€๋ฅด์ณ์ฃผ๋ฉด ํ•™์ƒ๋“ค์ด ์—„์ฒญ ์ข‹์•„ํ•  ๊ฑฐ์˜ˆ์š”. "์™€~ ์„ ์ƒ๋‹˜, ์ด๊ฑฐ ์™„์ „ ์‹ ๊ธฐํ•ด์š”!" ์ด๋Ÿฌ๋ฉด์„œ ๋ง์ด์ฃ . ใ…Žใ…Ž ๐Ÿ˜†

๊ทธ๋Ÿผ ์ด์ œ ์ข€ ๋” ๊ณ ๊ธ‰ ๊ธฐ์ˆ ๋กœ ๋„˜์–ด๊ฐ€๋ณผ๊นŒ์š”? ๐Ÿ‹๏ธโ€โ™€๏ธ

๐Ÿš€ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด ๋งŒ๋“ค๊ธฐ: ๊ณ ๊ธ‰ํŽธ

์ž, ์ด์ œ ์ข€ ๋” ๋ณต์žกํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค์–ด๋ณผ ๊ฑฐ์˜ˆ์š”. ์ด๋ฒˆ์—๋Š” ๋ณต์†Œ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค์–ด๋ณผ๊ฒŒ์š”! ๐Ÿ˜Ž


#include <iostream>
#include <complex>

std::complex<double> operator"" _i(long double d) {
    return std::complex<double>(0, d);
}

std::complex<double> operator"" _i(unsigned long long d) {
    return std::complex<double>(0, static_cast<double>(d));
}

int main() {
    auto z1 = 3.0 + 4.0_i;
    auto z2 = 2 + 5_i;
    
    std::cout << "z1 = " << z1 << std::endl;
    std::cout << "z2 = " << z2 << std::endl;
    std::cout << "z1 + z2 = " << z1 + z2 << std::endl;
    
    return 0;
}

์šฐ์™€~ ์ด์ œ ๋ณต์†Œ์ˆ˜๋ฅผ ์•„์ฃผ ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋์–ด์š”! ๐Ÿคฉ

๋ณต์†Œ์ˆ˜์˜ ๋งˆ๋ฒ• ๋ณต์†Œ์ˆ˜์˜ ๋งˆ๋ฒ• 3 + 4i 2 + 5i

์ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณต์†Œ์ˆ˜๋ฅผ ๋งˆ์น˜ ์‹ค์ˆ˜์ฒ˜๋Ÿผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์–ด์š”. 3.0 + 4.0_i ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด ๋ฐ”๋กœ ๋ณต์†Œ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฑฐ์ฃ ! ๐Ÿ‘ป

๐Ÿ” ๋ณต์†Œ์ˆ˜(Complex Number)๋ž€?
์‹ค์ˆ˜๋ถ€์™€ ํ—ˆ์ˆ˜๋ถ€๋กœ ๊ตฌ์„ฑ๋œ ์ˆ˜๋ฅผ ๋งํ•ด์š”. a + bi ํ˜•ํƒœ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ์—ฌ๊ธฐ์„œ i๋Š” โˆš-1์„ ์˜๋ฏธํ•ด์š”.

์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ํ™œ์šฉํ•˜๋ฉด, ์ˆ˜ํ•™์ ์ธ ๊ฐœ๋…๋„ ์ฝ”๋“œ๋กœ ์•„์ฃผ ์šฐ์•„ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋งˆ์น˜ ์ˆ˜ํ•™ ๊ณต์‹์„ ๊ทธ๋Œ€๋กœ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธด ๊ฒƒ ๊ฐ™์ฃ ? ๐Ÿ˜†

๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ ๋˜ ํ•˜๋‚˜ ์ฃผ์˜ํ•  ์ ์ด ์žˆ์–ด์š”!

โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ
์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…์€ ์ œํ•œ๋˜์–ด ์žˆ์–ด์š”. ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ต๋‹ˆ๋‹ค:

  • char const*
  • unsigned long long
  • long double
  • char const*, std::size_t
  • wchar_t const*, std::size_t
  • char16_t const*, std::size_t
  • char32_t const*, std::size_t

์ด๋Ÿฐ ์ œํ•œ์ด ์žˆ๋Š” ์ด์œ ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฆฌํ„ฐ๋Ÿด์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ์˜ˆ์š”. ํ•˜์ง€๋งŒ ์ด ์ •๋„๋งŒ ์žˆ์–ด๋„ ์ถฉ๋ถ„ํžˆ ๋‹ค์–‘ํ•œ ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ฃ ! ๐Ÿ‘

์ž, ์ด์ œ ์šฐ๋ฆฌ๋Š” ์ •๋ง ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋ฅผ ์†์— ๋„ฃ์—ˆ์–ด์š”. ์ด๊ฑธ ํ™œ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ํ›จ์”ฌ ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ , ์˜๋ฏธ ์žˆ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ๋งˆ์น˜ ์šฐ๋ฆฌ๋งŒ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ ๊ฐ™์ง€ ์•Š๋‚˜์š”? ๐Ÿค“

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์ด๋Ÿฐ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณผ๊ฒŒ์š”. ๊ธฐ๋Œ€๋˜์ง€ ์•Š๋‚˜์š”? ๐ŸŽ‰

๐ŸŒŸ ์‹ค์ „์—์„œ์˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด ํ™œ์šฉ

์ž, ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šด ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณผ ๊ฑฐ์˜ˆ์š”. ์žฌ๋Šฅ๋„ท์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠœํ„ฐ๋กœ ํ™œ๋™ํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด๋ผ๋ฉด ์ด๋Ÿฐ ์‹ค์ „ ์˜ˆ์ œ๋ฅผ ํ•™์ƒ๋“ค์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋ฉด ์ •๋ง ์ข‹์•„ํ•  ๊ฑฐ์˜ˆ์š”! ๐Ÿ˜‰

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ํ™œ์šฉํ•ด๋ณผ๊นŒ์š”?


#include <iostream>
#include <string>

class Vector2D {
public:
    float x, y;
    Vector2D(float x, float y) : x(x), y(y) {}
};

Vector2D operator"" _px(long double x) {
    return Vector2D(static_cast<float>(x), 0.0f);
}

Vector2D operator"" _py(long double y) {
    return Vector2D(0.0f, static_cast<float>(y));
}

Vector2D operator+(const Vector2D& lhs, const Vector2D& rhs) {
    return Vector2D(lhs.x + rhs.x, lhs.y + rhs.y);
}

std::ostream& operator<<(std::ostream& os, const Vector2D& v) {
    return os << "(" << v.x << ", " << v.y << ")";
}

int main() {
    auto position = 100.0_px + 50.0_py;
    std::cout << "์บ๋ฆญํ„ฐ ์œ„์น˜: " << position << std::endl;
    return 0;
}

์šฐ์™€~ ์ด์ œ ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ์˜ ์œ„์น˜๋ฅผ ์•„์ฃผ ์ง๊ด€์ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋์–ด์š”! ๐Ÿ˜ฒ

๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ ์œ„์น˜ ํ‘œํ˜„ ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ ์œ„์น˜ ํ‘œํ˜„ 100.0_px 50.0_py ๐Ÿค– position = 100.0_px + 50.0_py

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฒŒ์ž„ ๊ฐœ๋ฐœํ•  ๋•Œ ์บ๋ฆญํ„ฐ์˜ ์œ„์น˜๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์ด๋™์‹œํ‚ค๋Š” ๊ฒŒ ํ›จ์”ฌ ์‰ฌ์›Œ์ ธ์š”. ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์บ๋ฆญํ„ฐ๊ฐ€ ์–ด๋””๋กœ ์ด๋™ํ•˜๋Š”์ง€ ํ•œ๋ˆˆ์— ์•Œ ์ˆ˜ ์žˆ์ฃ ! ๐Ÿ‘€

๋˜ ๋‹ค๋ฅธ ์˜ˆ๋กœ, ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค์–ด๋ณผ๊นŒ์š”?


#include <iostream>

class DataSize {
    unsigned long long bytes;
public:
    DataSize(unsigned long long  b) : bytes(b) {}
    
    unsigned long long getBytes() const { return bytes; }
    double getKilobytes() const { return bytes / 1024.0; }
    double getMegabytes() const { return bytes / (1024.0 * 1024.0); }
    double getGigabytes() const { return bytes / (1024.0 * 1024.0 * 1024.0); }
};

DataSize operator"" _B(unsigned long long b) {
    return DataSize(b);
}

DataSize operator"" _KB(unsigned long long kb) {
    return DataSize(kb * 1024);
}

DataSize operator"" _MB(unsigned long long mb) {
    return DataSize(mb * 1024 * 1024);
}

DataSize operator"" _GB(unsigned long long gb) {
    return DataSize(gb * 1024 * 1024 * 1024);
}

int main() {
    auto fileSize = 2_GB + 300_MB + 1500_KB;
    std::cout << "ํŒŒ์ผ ํฌ๊ธฐ: " << fileSize.getGigabytes() << " GB" << std::endl;
    return 0;
}

์™€์šฐ! ์ด์ œ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์•„์ฃผ ์ง๊ด€์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋์–ด์š”! ๐ŸŽ‰

ํŒŒ์ผ ํฌ๊ธฐ ํ‘œํ˜„ ํŒŒ์ผ ํฌ๊ธฐ ํ‘œํ˜„ 2_GB 300_MB 1500_KB 2.29 GB

์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ํ™œ์šฉํ•˜๋ฉด, ๋ณต์žกํ•œ ๋‹จ์œ„ ๋ณ€ํ™˜์ด๋‚˜ ๊ณ„์‚ฐ์„ ์•„์ฃผ ์‰ฝ๊ณ  ์ง๊ด€์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๋„ ๋†’์•„์ง€๊ณ , ์‹ค์ˆ˜ํ•  ํ™•๋ฅ ๋„ ์ค„์–ด๋“ค์ฃ ! ๐Ÿ‘

๐Ÿ’ก Tip
์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค ๋•Œ๋Š” ํ•ญ์ƒ ๊ทธ ์˜๋ฏธ๊ฐ€ ๋ช…ํ™•ํ•˜๊ณ  ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•ด์š”. ๋˜ํ•œ, ๋„ˆ๋ฌด ๋งŽ์€ ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค๋ฉด ์˜คํžˆ๋ ค ํ˜ผ๋ž€์„ ์ค„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ด์š”!

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๋ฉด, ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์ข‹์•„์ ธ์š”. ํŠนํžˆ ํŠน์ • ๋„๋ฉ”์ธ์— ํŠนํ™”๋œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ๋•Œ ์ •๋ง ์œ ์šฉํ•˜๋‹ต๋‹ˆ๋‹ค. ๐Ÿš€

์˜ˆ๋ฅผ ๋“ค์–ด, ์žฌ๋Šฅ๋„ท์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠœํ„ฐ๋ง์„ ํ•  ๋•Œ ์ด๋Ÿฐ ์˜ˆ์ œ๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉด ํ•™์ƒ๋“ค์ด "์™€~ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์ง€๋„ค์š”!"๋ผ๊ณ  ๋งํ•  ๊ฑฐ์˜ˆ์š”. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ๊ณ ๊ธ‰ ๊ธฐ์ˆ ์„ ์•Œ๋ ค์ฃผ๋ฉด ํ•™์ƒ๋“ค์˜ ๋ˆˆ์ด ๋ฐ˜์ง๋ฐ˜์ง ๋น›๋‚˜๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”. ๐Ÿ˜Š

์ž, ์ด์ œ ์šฐ๋ฆฌ๋Š” C++์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ธ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์— ๋Œ€ํ•ด ๊นŠ์ด ์žˆ๊ฒŒ ์•Œ์•„๋ดค์–ด์š”. ์ด๊ฑธ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฝ”๋“œ๊ฐ€ ํ•œ์ธต ๋” ์„ธ๋ จ๋˜๊ณ  ์ „๋ฌธ์ ์œผ๋กœ ๋ณด์ผ ๊ฑฐ์˜ˆ์š”. ๋งˆ์น˜ ๋งž์ถค ์ •์žฅ์„ ์ž…์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ด์ฃ ! ๐Ÿ•ด๏ธ

๋‹ค์Œ์—๋Š” ๋˜ ๋‹ค๋ฅธ ํฅ๋ฏธ๋กœ์šด C++ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ๊ฒŒ์š”. ๊ธฐ๋Œ€๋˜์ง€ ์•Š๋‚˜์š”? ๐Ÿ˜‰

๐ŸŽ“ ๋งˆ๋ฌด๋ฆฌ: ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์˜ ํž˜

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ C++ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด ์—ฌํ–‰์ด ๋๋‚˜๊ฐ€๊ณ  ์žˆ์–ด์š”. ์ •๋ง ๋ฉ‹์ง„ ์—ฌํ–‰์ด์—ˆ์ฃ ? ๐Ÿ˜Š

์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šด ๋‚ด์šฉ์„ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋ณผ๊นŒ์š”?

  1. ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  2. ๋ณต์žกํ•œ ๋‹จ์œ„ ๋ณ€ํ™˜์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
  3. ๋„๋ฉ”์ธ ํŠนํ™” ์–ธ์–ด(DSL)๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์‹ค์ˆ˜๋ฅผ ์ค„์ด๊ณ  ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. C++์˜ ํ‘œํ˜„๋ ฅ์„ ํ•œ์ธต ๋” ๋Œ์–ด์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด, ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฝ”๋“œ๋Š” ๋งˆ์น˜ ์‹œ์ฒ˜๋Ÿผ ์•„๋ฆ„๋‹ต๊ณ , ์†Œ์„ค์ฒ˜๋Ÿผ ์ฝ๊ธฐ ์‰ฌ์›Œ์งˆ ๊ฑฐ์˜ˆ์š”. ๐Ÿ‘จโ€๐ŸŽจโœจ

์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์˜ ํž˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์˜ ํž˜ C++ ๊ฐ€๋…์„ฑ โฌ†๏ธ ์•ˆ์ •์„ฑ โฌ†๏ธ ํ‘œํ˜„๋ ฅ โฌ†๏ธ ์ƒ์‚ฐ์„ฑ โฌ†๏ธ

์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์€ ์ •๋ง ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ง€๋งŒ, ๋ชจ๋“  ๋„๊ตฌ๊ฐ€ ๊ทธ๋ ‡๋“ฏ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ด์š”. ๋„ˆ๋ฌด ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉด ์˜คํžˆ๋ ค ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฃผ์˜ํ•ด์•ผ ํ•ด์š”. ๐Ÿง

๐ŸŒŸ ์ตœ์ข… Tip
์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด์„ ๋งŒ๋“ค ๋•Œ๋Š” ํ•ญ์ƒ ํŒ€์›๋“ค๊ณผ ์ƒ์˜ํ•˜์„ธ์š”. ๋ชจ๋‘๊ฐ€ ์ดํ•ดํ•˜๊ณ  ๋™์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ด์š”. ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์„œํ™”๋ฅผ ์žŠ์ง€ ๋งˆ์„ธ์š”!

์ž, ์ด์ œ ์—ฌ๋Ÿฌ๋ถ„์€ C++์˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํ„ฐ๋Ÿด ๋งˆ์Šคํ„ฐ๊ฐ€ ๋˜์—ˆ์–ด์š”! ๐Ÿ† ์ด ์ง€์‹์„ ํ™œ์šฉํ•ด์„œ ๋” ๋ฉ‹์ง„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”. ํŠนํžˆ ์žฌ๋Šฅ๋„ท์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠœํ„ฐ๋ง์„ ํ•˜์‹ค ๋•Œ, ์ด๋Ÿฐ ๊ณ ๊ธ‰ ๊ธฐ์ˆ ์„ ํ•™์ƒ๋“ค์—๊ฒŒ ๊ฐ€๋ฅด์ณ์ฃผ๋ฉด ์ •๋ง ์ข‹์•„ํ•  ๊ฑฐ์˜ˆ์š”. "์™€~ ์„ ์ƒ๋‹˜, ์ด๋Ÿฐ ๊ฒƒ๋„ ์žˆ์—ˆ๋„ค์š”!" ํ•˜๋ฉด์„œ ๋ง์ด์ฃ . ๐Ÿ˜†

์•ž์œผ๋กœ๋„ ๊ณ„์†ํ•ด์„œ C++์˜ ๋ฉ‹์ง„ ๊ธฐ๋Šฅ๋“ค์„ ํƒํ—˜ํ•ด ๋‚˜๊ฐ€์š”. ๋‹ค์Œ์—๋Š” ๋˜ ์–ด๋–ค ํฅ๋ฏธ์ง„์ง„ํ•œ ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃฐ์ง€ ๊ธฐ๋Œ€๋˜์ง€ ์•Š๋‚˜์š”? ์šฐ๋ฆฌ์˜ ์ฝ”๋”ฉ ์—ฌํ–‰์€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค! ๐Ÿš€๐ŸŒŸ

๊ทธ๋Ÿผ, ๋‹ค์Œ ์‹œ๊ฐ„์— ๋˜ ๋งŒ๋‚˜์š”! ์•ˆ๋…•~ ๐Ÿ‘‹