[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋งค์นญ์ ์ˆ˜ :: c++, 8๋ฒˆ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค, ํ’€์ด, ์ฝ”๋“œ

๋งค์นญ ์ ์ˆ˜

๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : 3์‹œ๊ฐ„ ์ด์ƒ

๋ฌธ์ œ

๋‚œ์ด๋„ โ˜…โ˜…โ˜…โ˜†โ˜†

๋ฌธ์ œ ์„ค๋ช…

ํ”„๋ Œ์ฆˆ ๋Œ€ํ•™๊ต ์กฐ๊ต์˜€๋˜ ์ œ์ด์ง€๋Š” ํ—ˆ๋“œ๋ ›์ผ๋งŒ ์‹œํ‚ค๋Š” ๋„ค์˜ค ํ•™๊ณผ์žฅ๋‹˜์˜ ๋งˆ์ˆ˜์—์„œ ๋ฒ—์–ด๋‚˜, ์นด์นด์˜ค์— ์ž…์‚ฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
ํ‰์†Œ์— ๊ด€์‹ฌ์žˆ์–ดํ•˜๋˜ ๊ฒ€์ƒ‰์— ๋งˆ์นจ ๊ฒฐ์›์ด ๋ฐœ์ƒํ•˜์—ฌ, ๊ฒ€์ƒ‰๊ฐœ๋ฐœํŒ€์— ํŽธ์ž…๋  ์ˆ˜ ์žˆ์—ˆ๊ณ , ๋Œ€๋ง์˜ ์ฒซ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค.
๊ทธ ํ”„๋กœ์ ํŠธ๋Š” ๊ฒ€์ƒ‰์–ด์— ๊ฐ€์žฅ ์ž˜ ๋งž๋Š” ์›นํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ๊ฒ€์ƒ‰์–ด์— ๋Œ€ํ•œ ์›นํŽ˜์ด์ง€์˜ ๋งค์นญ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

  • ํ•œ ์›นํŽ˜์ด์ง€์— ๋Œ€ํ•ด์„œ ๊ธฐ๋ณธ์ ์ˆ˜, ์™ธ๋ถ€ ๋งํฌ ์ˆ˜, ๋งํฌ์ ์ˆ˜, ๊ทธ๋ฆฌ๊ณ  ๋งค์นญ์ ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•œ ์›นํŽ˜์ด์ง€์˜ ๊ธฐ๋ณธ์ ์ˆ˜๋Š” ํ•ด๋‹น ์›นํŽ˜์ด์ง€์˜ ํ…์ŠคํŠธ ์ค‘, ๊ฒ€์ƒ‰์–ด๊ฐ€ ๋“ฑ์žฅํ•˜๋Š” ํšŸ์ˆ˜์ด๋‹ค. (๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ)
  • ํ•œ ์›นํŽ˜์ด์ง€์˜ ์™ธ๋ถ€ ๋งํฌ ์ˆ˜๋Š” ํ•ด๋‹น ์›นํŽ˜์ด์ง€์—์„œ ๋‹ค๋ฅธ ์™ธ๋ถ€ ํŽ˜์ด์ง€๋กœ ์—ฐ๊ฒฐ๋œ ๋งํฌ์˜ ๊ฐœ์ˆ˜์ด๋‹ค.
  • ํ•œ ์›นํŽ˜์ด์ง€์˜ ๋งํฌ์ ์ˆ˜๋Š” ํ•ด๋‹น ์›นํŽ˜์ด์ง€๋กœ ๋งํฌ๊ฐ€ ๊ฑธ๋ฆฐ ๋‹ค๋ฅธ ์›นํŽ˜์ด์ง€์˜ ๊ธฐ๋ณธ์ ์ˆ˜ ÷ ์™ธ๋ถ€ ๋งํฌ ์ˆ˜์˜ ์ดํ•ฉ์ด๋‹ค.
  • ํ•œ ์›นํŽ˜์ด์ง€์˜ ๋งค์นญ์ ์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์ˆ˜์™€ ๋งํฌ์ ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด A, B, C ์„ธ ๊ฐœ์˜ ์›นํŽ˜์ด์ง€๊ฐ€ ์žˆ๊ณ , ๊ฒ€์ƒ‰์–ด๊ฐ€ hi๋ผ๊ณ  ํ•˜์ž.

page_rank1.png

์ด๋•Œ A ์›นํŽ˜์ด์ง€์˜ ๋งค์นญ์ ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๊ธฐ๋ณธ ์ ์ˆ˜๋Š” ๊ฐ ์›นํŽ˜์ด์ง€์—์„œ hi๊ฐ€ ๋“ฑ์žฅํ•œ ํšŸ์ˆ˜์ด๋‹ค.
    • A,B,C ์›นํŽ˜์ด์ง€์˜ ๊ธฐ๋ณธ์ ์ˆ˜๋Š” ๊ฐ๊ฐ 1์ , 4์ , 9์ ์ด๋‹ค.
  • ์™ธ๋ถ€ ๋งํฌ์ˆ˜๋Š” ๋‹ค๋ฅธ ์›นํŽ˜์ด์ง€๋กœ ๋งํฌ๊ฐ€ ๊ฑธ๋ฆฐ ๊ฐœ์ˆ˜์ด๋‹ค.
    • A,B,C ์›นํŽ˜์ด์ง€์˜ ์™ธ๋ถ€ ๋งํฌ ์ˆ˜๋Š” ๊ฐ๊ฐ 1์ , 2์ , 3์ ์ด๋‹ค.
  • A ์›นํŽ˜์ด์ง€๋กœ ๋งํฌ๊ฐ€ ๊ฑธ๋ฆฐ ํŽ˜์ด์ง€๋Š” B์™€ C๊ฐ€ ์žˆ๋‹ค.
    • A ์›นํŽ˜์ด์ง€์˜ ๋งํฌ์ ์ˆ˜๋Š” B์˜ ๋งํฌ์ ์ˆ˜ 2์ (4 ÷ 2)๊ณผ C์˜ ๋งํฌ์ ์ˆ˜ 3์ (9 ÷ 3)์„ ๋”ํ•œ 5์ ์ด ๋œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฏ€๋กœ, A ์›นํŽ˜์ด์ง€์˜ ๋งค์นญ์ ์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์ˆ˜ 1์  + ๋งํฌ์ ์ˆ˜ 5์  = 6์ ์ด ๋œ๋‹ค.

๊ฒ€์ƒ‰์–ด word์™€ ์›นํŽ˜์ด์ง€์˜ HTML ๋ชฉ๋ก์ธ pages๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋งค์นญ์ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์›นํŽ˜์ด์ง€์˜ index๋ฅผ ๊ตฌํ•˜๋ผ. ๋งŒ์•ฝ ๊ทธ๋Ÿฐ ์›นํŽ˜์ด์ง€๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด ๊ทธ์ค‘ ๋ฒˆํ˜ธ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ๊ตฌํ•˜๋ผ.

์ œํ•œ์‚ฌํ•ญ

  • pages๋Š” HTML ํ˜•์‹์˜ ์›นํŽ˜์ด์ง€๊ฐ€ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด์ด๊ณ , ๊ธธ์ด๋Š” 1 ์ด์ƒ 20 ์ดํ•˜์ด๋‹ค.

  • ํ•œ ์›นํŽ˜์ด์ง€ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 1,500 ์ดํ•˜์ด๋‹ค.

  • ์›นํŽ˜์ด์ง€์˜ index๋Š” pages ๋ฐฐ์—ด์˜ index์™€ ๊ฐ™์œผ๋ฉฐ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

  • ํ•œ ์›นํŽ˜์ด์ง€์˜ url์€ HTML์˜ํƒœ๊ทธ ๋‚ด์—ํƒœ๊ทธ์˜ ๊ฐ’์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

    • ์˜ˆ๋ฅผ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์€ meta tag๊ฐ€ ์žˆ์œผ๋ฉด ์ด ์›นํŽ˜์ด์ง€์˜ url์€ https://careers.kakao.com/index ์ด๋‹ค.
    •  
  • ํ•œ ์›นํŽ˜์ด์ง€์—์„œ ๋ชจ๋“  ์™ธ๋ถ€ ๋งํฌ๋Š” <a href=

    https://careers.kakao.com/index

    >์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค.

  • ๋ชจ๋“  url์€ https:// ๋กœ๋งŒ ์‹œ์ž‘ํ•œ๋‹ค.

  • ๊ฒ€์ƒ‰์–ด word๋Š” ํ•˜๋‚˜์˜ ์˜์–ด ๋‹จ์–ด๋กœ๋งŒ ์ฃผ์–ด์ง€๋ฉฐ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž์™€ ๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

  • word์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 12 ์ดํ•˜์ด๋‹ค.

  • ๊ฒ€์ƒ‰์–ด๋ฅผ ์ฐพ์„ ๋•Œ, ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์€ ๋ฌด์‹œํ•˜๊ณ  ์ฐพ๋Š”๋‹ค.

    • ์˜ˆ๋ฅผ๋“ค์–ด ๊ฒ€์ƒ‰์–ด๊ฐ€ blind์ผ ๋•Œ, HTML ๋‚ด์— Blind๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ์žˆ๊ฑฐ๋‚˜, BLIND๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ์žˆ์œผ๋ฉด ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ํ•ด๋‹น๋œ๋‹ค.
  • ๊ฒ€์ƒ‰์–ด๋Š” ๋‹จ์–ด ๋‹จ์œ„๋กœ ๋น„๊ตํ•˜๋ฉฐ, ๋‹จ์–ด์™€ ์™„์ „ํžˆ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ธฐ๋ณธ ์ ์ˆ˜์— ๋ฐ˜์˜ํ•œ๋‹ค.

    • ๋‹จ์–ด๋Š” ์•ŒํŒŒ๋ฒณ์„ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.
    • ์˜ˆ๋ฅผ๋“ค์–ด ๊ฒ€์ƒ‰์–ด๊ฐ€ aba ์ผ ๋•Œ, abab abababa๋Š” ๋‹จ์–ด ๋‹จ์œ„๋กœ ์ผ์น˜ํ•˜๋Š”๊ฒŒ ์—†์œผ๋‹ˆ, ๊ธฐ๋ณธ ์ ์ˆ˜๋Š” 0์ ์ด ๋œ๋‹ค.
    • ๋งŒ์•ฝ ๊ฒ€์ƒ‰์–ด๊ฐ€ aba ๋ผ๋ฉด, aba@aba aba๋Š” ๋‹จ์–ด ๋‹จ์œ„๋กœ ์„ธ๊ฐœ๊ฐ€ ์ผ์น˜ํ•˜๋ฏ€๋กœ, ๊ธฐ๋ณธ ์ ์ˆ˜๋Š” 3์ ์ด๋‹ค.
  • ๊ฒฐ๊ณผ๋ฅผ ๋Œ๋ ค์ค„๋•Œ, ๋™์ผํ•œ ๋งค์นญ์ ์ˆ˜๋ฅผ ๊ฐ€์ง„ ์›นํŽ˜์ด์ง€๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด ๊ทธ์ค‘ index ๋ฒˆํ˜ธ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค

    • ์ฆ‰, ์›นํŽ˜์ด์ง€๊ฐ€ ์„ธ๊ฐœ์ด๊ณ , ๊ฐ๊ฐ ๋งค์นญ์ ์ˆ˜๊ฐ€ 3,1,3 ์ด๋ผ๋ฉด ์ œ์ผ ์ ์€ index ๋ฒˆํ˜ธ์ธ 0์„ ๋ฆฌํ„ดํ•˜๋ฉด ๋œ๋‹ค.

 

์ฝ”๋“œ

#include <string>
#include <vector>
#include <map>
#include <algorithm>

using namespace std;

struct WebPage {
    int basePoint;
    vector<int> linkTo;
    int linkNum;
    double linkPoint;
    double matchingPoint;
    WebPage() {
        basePoint = 0;
        linkPoint = 0;
        linkNum = 0;
        matchingPoint = 0;
    }
};

int solution(string word, vector<string> pages) {
    int answer = 0;
    vector<WebPage*> webPages;
    for (int i = 0; i < pages.size(); i++) {
        webPages.push_back(new WebPage());
    }
    vector<string> address;
    transform(word.begin(), word.end(), word.begin(), ::tolower);

    for (int i = 0; i < pages.size(); i++) {
        string& s = pages[i];
        transform(s.begin(), s.end(), s.begin(), ::tolower);
        // ํ•ด๋‹น ์‚ฌ์ดํŠธ์˜ url ์ €์žฅ
        int pos = 0, mid = 0, posr;
        while (mid <= pos) {
            pos = s.find("<meta", pos + 1);
            posr = s.find(">", pos);
            mid = s.rfind("https://", posr); // >์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ฐพ๊ธฐ
        }
        posr = s.find("\"", mid);
        string url = s.substr(mid, posr - mid);
        address.push_back(url);


        // body ๋‚ด์˜ ๋ฌธ์ž์—ด ๊ฐฏ์ˆ˜ ์ธก์ •
        pos = s.find("<body>", posr);

        int start = pos;
        while (1) {
            start = s.find(word, start + 1);
            if (start == string::npos)
                break;
            if (!isalpha(s[start - 1]) && !isalpha(s[start + word.size()])) {
                webPages[i]->basePoint++;
                start += word.size();
            }
        }
    }

    for (int i = 0; i<pages.size(); i++) {
        string& s = pages[i];
        int posl = s.find("<body>");
        int mid = posl;
        int posr;

        while (1) {
            posl = s.find("<a href", posl + 1);
            if (posl == string::npos)
                break;
            webPages[i]->linkNum++;
            posl = s.find("https://", posl + 1);
            posr = s.find(">", posl);
            mid = s.rfind("\"", posr);

            if (mid <= posl)
                continue;

            string url = s.substr(posl, mid - posl);
            auto location = find(address.begin(), address.end(), url);
            if (location == address.end())
                continue;
            int idx = location - address.begin();
            auto linkvec = webPages[i]->linkTo;
            if (find(linkvec.begin(), linkvec.end(), idx) == linkvec.end()) // ์—†๋Š” idx๋งŒ ๋„ฃ๊ธฐ
                webPages[i]->linkTo.push_back(idx);
        }
    }

    for (int i = 0; i < pages.size(); i++) {
        for (int j = 0; j < webPages[i]->linkTo.size(); j++) {
            int idx = webPages[i]->linkTo[j];
            webPages[idx]->linkPoint += (double)webPages[i]->basePoint / (double)webPages[i]->linkNum;
        }
    }

    double maxPoint = 0;
    for (int i = 0; i<pages.size(); i++) {
        webPages[i]->matchingPoint = webPages[i]->basePoint + webPages[i]->linkPoint;
        if (webPages[i]->matchingPoint > maxPoint) {
            maxPoint = webPages[i]->matchingPoint;
            answer = i;
        }
    }

    return answer;
}

 

ํ’€์ด

๋ชจ๋“  test case๋ฅผ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋„๋ก ํƒœ๊ทธ์˜ ์œ„์น˜๋ฅผ ์ž˜ ๊ฒ€์ƒ‰ํ•ด์„œ ๊ฐ’์„ ๋ฝ‘์•„๋‚ด๋ฉด ๋œ๋‹ค.

  • ์›นํŽ˜์ด์ง€์˜ meta ํƒœ๊ทธ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ url์„ address vector์— ์ €์žฅํ•œ๋‹ค.
  • ์›นํŽ˜์ด์ง€์˜ body์—์„œ ์ฃผ์–ด์ง„ word์™€ ์ผ์น˜ํ•˜๋Š” ๋‹จ์–ด๊ฐ€ ์žˆ๋Š”์ง€ ๋‹จ์–ด ๋ณ„๋กœ ๊ฒ€์‚ฌํ•œ๋‹ค.
    • ์ผ์น˜ํ•˜๋Š” ๋‹จ์–ด๊ฐ€ ์žˆ์„ ์‹œ ํ•ด๋‹น ๋‹จ์–ด ์ฃผ์œ„์— ์•ŒํŒŒ๋ฒณ์ด ์•„๋‹Œ ๋ฌธ์ž๊ฐ€ ์žˆ์–ด์•ผ ํ†ต๊ณผ.
    • word์™€ body ๋ชจ๋‘ ์†Œ๋ฌธ์ž ํ˜น์€ ๋Œ€๋ฌธ์ž๋กœ ํ†ต์ผ ์‹œ์ผœ์ฃผ์–ด์•ผ ์ฐพ๊ธฐ ์‰ฝ๋‹ค.
  • ์›นํŽ˜์ด์ง€์˜ body์—์„œ a ํƒœ๊ทธ๋ฅผ ์ฐพ์•„์„œ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ linkNum์„ ๊ณ„์‚ฐํ•ด์ค€๋‹ค.
  • ์›นํŽ˜์ด์ง€์˜ body์—์„œ a ํƒœ๊ทธ๋ฅผ ์ฐพ์•„์„œ ์™ธ๋ถ€ ๋งํฌ๊ฐ€ ํ–ฅํ•˜๋Š” ํŽ˜์ด์ง€์˜ linkPoint๋ฅผ ๊ณ„์‚ฐํ•ด์ค€๋‹ค.
    • linkPoint๋Š” ๊ธฐ๋ณธ์ ์ˆ˜์™€ ๋งํฌ ์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ ๋ฐ”๋กœ ์ง์ „ linkNum์„ ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ํ”„๋กœ์„ธ์Šค์™€ ํ•จ๊ป˜ ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.
  • basePoint์™€ linkPoint๋ฅผ ๊ฐ€์ง€๊ณ  matchingPoint๋ฅผ ๊ณ„์‚ฐํ•ด์ค€๋‹ค.
  • matchingPoint๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ์›นํŽ˜์ด์ง€์˜ index๋ฅผ returnํ•œ๋‹ค.
    • matchingPoint์˜ ์ตœ๋Œ€๋ฅผ ๊ตฌํ•˜๋Š” ์‹์œผ๋กœ ๋™์ž‘ํ•˜์—ฌ ์ตœ๋Œ€๊ฐ’์ด ๊ฐฑ์‹ ๋˜๋ฉด ํ•ด๋‹น index๋ฅผ answer์— ์ €์žฅ

 

์ฑ„์  ๊ฒฐ๊ณผ

 

์ฃผ์š” ์‚ฌํ•ญ

8๋ฒˆ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์•ˆ ํ’€์–ด์ง€๋Š” ๊ฒฝ์šฐ

  • meta tag์—์„œ <> ์‚ฌ์ด์— https://๊ฐ€ ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
    • ๋‹ค๋ฅธ meta tag๋ฅผ ์ฐพ์•„์•ผํ•œ๋‹ค.
  • point ๊ณ„์‚ฐ์„ float ํ˜•์œผ๋กœ ํ•œ ๊ฒฝ์šฐ
    • doubleํ˜•์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

=> 8๋ฒˆ ํ…Œ์ผ€ ๋•Œ๋ฌธ์— ์˜ค๋ž˜ ๊ฑธ๋ ธ์ง€๋งŒ, ๊ธฐ๋ณธ ๊ตฌํ˜„๋„ 2์‹œ๊ฐ„์€ ๊ฑธ๋ ธ๊ณ  ๊ฐ•์˜๋ฅผ ์ฐพ์•„๋ณด๋‹ˆ ์—ฌ๋Ÿฌ ๊ฐ„ํŽธํ•œ ๋ฌธ๋ฒ•์„ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ๋‹ค.

  • find ํ•จ์ˆ˜์—์„œ 2๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  • rfind ํ•จ์ˆ˜๋Š” ์‹œ์ž‘ ์œ„์น˜์—์„œ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ์ฐพ์•„์ค€๋‹ค.
  • transform(์‹œ์ž‘, ๋, ๊ฒฐ๊ณผ์‹œ์ž‘, ์—ฐ์‚ฐ ํ•จ์ˆ˜) ๋กœ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์—ฐ์‚ฐํ•จ์ˆ˜์— ::toupper ๋˜๋Š” ::tolower ๋ฅผ ๋„ฃ์œผ๋ฉด ๋Œ€์†Œ๋ฌธ์ž ๋ณ€๊ฒฝ์ด ์ˆ˜์›”ํ•˜๋‹ค.

์ฐธ๊ณ : https://www.youtube.com/watch?v=XmciZoxp18g

๋ฐ˜์‘ํ˜•