์œ„์žฅ

์œ„์žฅ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํ•ด์‹œ ๋ฌธ์ œ

๋ฌธ์ œ ๋งํฌ
๋ณธ ๋ฌธ์ œ๋Š” C++๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

๋ฌธ์ œ๊ฐ€ ์–ด๋ ต๋‹ค๊ธฐ๋ณด๋‹ค ์ˆ˜ํ•™์  ์‚ฌ๊ณ  ๋Šฅ๋ ฅ์„ ์š”๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ํ•œ๋ฒˆ ๊ฐ™์ด ๋ณด์ž.

๋ฌธ์ œ ์„ค๋ช…

์ŠคํŒŒ์ด๋“ค์€ ๋งค์ผ ๋‹ค๋ฅธ ์˜ท์„ ์กฐํ•ฉํ•˜์—ฌ ์ž…์–ด ์ž์‹ ์„ ์œ„์žฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ŠคํŒŒ์ด๊ฐ€ ๊ฐ€์ง„ ์˜ท์ด ์•„๋ž˜์™€ ๊ฐ™๊ณ  ์˜ค๋Š˜ ์ŠคํŒŒ์ด๊ฐ€ ๋™๊ทธ๋ž€ ์•ˆ๊ฒฝ, ๊ธด ์ฝ”ํŠธ, ํŒŒ๋ž€์ƒ‰ ํ‹ฐ์…”์ธ ๋ฅผ ์ž…์—ˆ๋‹ค๋ฉด ๋‹ค์Œ๋‚ ์€ ์ฒญ๋ฐ”์ง€๋ฅผ ์ถ”๊ฐ€๋กœ ์ž…๊ฑฐ๋‚˜ ๋™๊ทธ๋ž€ ์•ˆ๊ฒฝ ๋Œ€์‹  ๊ฒ€์ • ์„ ๊ธ€๋ผ์Šค๋ฅผ ์ฐฉ์šฉํ•˜๊ฑฐ๋‚˜ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ข…๋ฅ˜์ด๋ฆ„
์–ผ๊ตด๋™๊ทธ๋ž€ ์•ˆ๊ฒฝ
์ƒ์˜ํŒŒ๋ž€์ƒ‰ ํ‹ฐ์…”์ธ 
ํ•˜์˜์ฒญ๋ฐ”์ง€
๊ฒ‰์˜ท๊ธด ์ฝ”ํŠธ

์ŠคํŒŒ์ด๊ฐ€ ๊ฐ€์ง„ ์˜์ƒ๋“ค์ด ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด clothes๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ์„œ๋กœ ๋‹ค๋ฅธ ์˜ท์˜ ์กฐํ•ฉ์˜ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • clothes์˜ ๊ฐ ํ–‰์€ [์˜์ƒ์˜ ์ด๋ฆ„, ์˜์ƒ์˜ ์ข…๋ฅ˜]๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ŠคํŒŒ์ด๊ฐ€ ๊ฐ€์ง„ ์˜์ƒ์˜ ์ˆ˜๋Š” 1๊ฐœ ์ด์ƒ 30๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์˜์ƒ์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • clothes์˜ ๋ชจ๋“  ์›์†Œ๋Š” ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 20 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ด๊ณ  ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž ๋˜๋Š” โ€˜_โ€™ ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ŠคํŒŒ์ด๋Š” ํ•˜๋ฃจ์— ์ตœ์†Œ ํ•œ ๊ฐœ์˜ ์˜์ƒ์€ ์ž…์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

clothesreturn
[[โ€œyellowhatโ€, โ€œheadgearโ€], [โ€œbluesunglassesโ€, โ€œeyewearโ€], [โ€œgreen_turbanโ€, โ€œheadgearโ€]]5
[[โ€œcrowmaskโ€, โ€œfaceโ€], [โ€œbluesunglassesโ€, โ€œfaceโ€], [โ€œsmoky_makeupโ€, โ€œfaceโ€]]3

๋ฌธ์ œ ํ•ด๊ฒฐ

๋ฌธ์ œ ํ•ด์„

์ฒซ๋ฒˆ์งธ ์ž…์ถœ๋ ฅ ์˜ˆ๋ฅผ ๋ณด๋ฉด return ๊ฐ’์€ 5๋ผ๊ณ  ๋‚˜์™€์žˆ๋‹ค. ๊ทธ ์ด์œ ๋ฅผ ์•Œ์•„๋ณด์ž.
์ŠคํŒŒ์ด๋“ค์€ ๋“คํ‚ค์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์œ„์žฅ์„ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. headegear ๋ผ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ ์•ˆ์— yellowhat๊ณผ green_truban ํŒจ์…˜ ์•„์ดํ…œ๋“ค์ด ์žˆ๊ณ  eyewear ๋ผ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ ์•ˆ์— bluesunglasses ๋ผ๋Š” ํŒจ์…˜ ์•„์ดํ…œ์ด ์žˆ๋‹ค. ์ŠคํŒŒ์ด๋Š” ์ตœ์†Œ ํ•œ ๊ฐœ ์ด์ƒ์˜ ์˜์ƒ์€ ์ž…์–ด์•ผ ํ•œ๋‹ค๋Š” ์ œํ•œ์‚ฌํ•ญ๋„ ์ž˜ ๊ธฐ์–ตํ•ด๋‘์ž.

๊ทธ๋ ‡๋‹ค๋ฉด 5๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ค๋Š” ๊ณผ์ •์€

yellowhat ๋งŒ ์ฐฉ์šฉํ–ˆ์„ ๊ฒฝ์šฐ + green_turban ๋งŒ ์ฐฉ์šฉํ–ˆ์„ ๊ฒฝ์šฐ + bluesunglasses ๋งŒ ์ฐฉ์šฉํ–ˆ์„ ๊ฒฝ์šฐ + yellowhat ๊ณผ bluesunglasses ๋ฅผ ์ฐฉ์šฉํ–ˆ์„ ๊ฒฝ์šฐ + green_turban ๊ณผ bluesunglasses ๋ฅผ ์ฐฉ์šฉํ–ˆ์„ ๊ฒฝ์šฐ

ํ•ด์„œ 5๊ฐ€์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ž…์ถœ๋ ฅ ์˜ˆ์ œ 2๋„ ๋˜‘๊ฐ™์€ ์›๋ฆฌ๋‹ค.

์ˆ˜ํ•™์  ๊ณ„์‚ฐ

์ฝ”๋“œ๋Š” ์–ด๋–ป๊ฒŒ ์งœ์•ผ๋ ์ง€ ๊ฐ์ด ์™”๋‹ค. ๋‹ค๋งŒ ์ˆ˜๋งŽ์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์–ด๋–ป๊ฒŒ ์ปค๋ฒ„ํ•  ์ง€ ์ผ๋ฐ˜ํ™”๋œ ์ˆ˜์‹์ด ํ•„์š”ํ–ˆ๋‹ค.
๊ณ ๋ฏผ์„ ํ•ด๋ณด์žโ€ฆ ์ด ๋ฌธ์ œ๋Š” ์˜ท์„ ์–ด๋–ป๊ฒŒ ์ž…์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋“  ์กฐํ•ฉ์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๊ทธ ์ƒ๊ฐ์„ ๊ณ„์† ํ•˜๊ณ  ์žˆ์œผ๋ฉด ์ด๋Ÿฐ ๊ณต์‹์ด ๋– ์˜ค๋ฅธ๋‹ค.
\[\begin{aligned} (x+1)(y+1) = xy + x + y + 1 \end{aligned}\]

๊ฐ„๋‹จํ•œ ๊ณต์‹

๋ชจ๋“  ์กฐํ•ฉ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต์‹์ด๋‹ค. ๋‹ค๋งŒ ์—ฌ๊ธฐ์„œ -1 ์„ ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ ๊ทธ ์ด์œ ๋Š” ์ตœ์†Œ 1๊ฐœ ์ด์ƒ์˜ ์˜์ƒ์€ ์ฐฉ์šฉํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋‚˜์™€์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ฌด๊ฒƒ๋„ ์•ˆ ์ž…๊ณ  ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๋นผ์ค˜์•ผํ•œ๋‹ค.

์ฝ”๋“œ

ํ•ด๋‹น ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ์ŠคํŒŒ์ด๊ฐ€ ๋ฌด์Šจ ์˜์ƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€๋Š” ๊ด€์‹ฌ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ด€์‹ฌ์žˆ๋Š” ๊ฒƒ์€ ์–ด๋–ค ์นดํ…Œ๊ณ ๋ฆฌ ์•ˆ์— ๋ช‡ ๊ฐœ์˜ ์˜์ƒ์ด ์ค€๋น„๋˜์–ด ์žˆ๋Š”์ง€ ๊ทธ ๊ฐœ์ˆ˜๋งŒ ์•Œ๋ฉด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง€๋Š” ์˜์ƒ ์ค‘์—์„œ
clothes[x][1] ๋งŒ ๋”ฐ์™€ ๊ทธ ์นดํ…Œ๊ณ ๋ฆฌ์— ํฌํ•จ๋˜๋Š” ์˜์ƒ์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด๋ฉด ๋  ๊ฒƒ์ด๋‹ค.

using namespace std;

map<string, int> getHash(vector<vector<string>> clothes) {
    map<string, int> ret;
    
    for(int i=0; i<clothes.size(); i++) {
        auto itr = ret.find(clothes[i][1]);
        
        if(itr == ret.end()) {
            ret.insert(pair<string, int>(clothes[i][1], 1));
        } else {
            itr->second++;
        }
    }
    
    
    return ret;
}

int solution(vector<&ltvector<string>> clothes) {
    map<string, int>::iterator itr;
    map<string, int> ret = getHash(clothes);
    
    int answer = 1;
    
    for (itr = ret.begin(); itr != ret.end(); ++itr) {
        answer *= (itr->second+1);
    }
    
    return answer-1;
}

์ฝ”๋“œ ์„ค๋ช…

๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ ์•ˆ์— ์˜์ƒ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด Map ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด์šฉํ•˜์˜€๋‹ค. getHash ํ•จ์ˆ˜๋ฅผ ๋ณด๋ฉด ret ๋ณ€์ˆ˜์—์„œ clothes[i][1] (์นดํ…Œ๊ณ ๋ฆฌ) ๋ฅผ ์ฐพ์•„์™€ ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์— ํ•ด๋‹น๋˜๋Š” ์˜ท์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์† ๋”ํ•ด์ค˜๊ฐ€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณด์—ฌ์ค€๋‹ค. itr==ret.end() ๋ผ๋Š” ๊ฒƒ์€ ret ์—์„œ ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋๊นŒ์ง€ ์ฐพ์ง€ ๋ชปํ–ˆ์„ ๋•Œ๋ผ๋Š” ๋œป์ด๋‹ค.
์ด์ œ solution ํ•จ์ˆ˜๋ฅผ ๋ณด๋ฉด ์œ„์— ์ ์–ด๋†“์€ ์ˆ˜ํ•™ ๊ณต์‹์„ ์ ์šฉํ•œ ๋ชจ์Šต์ด๋‹ค.

์นดํ…Œ๊ณ ๋ฆฌ ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ์ด๋”๋ผ๋„ ์ € ๊ณต์‹์„ ์œ ์ง€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ headgear, eyegear, outer ์ด 3๊ฐœ๊ฐ€ ์žˆ๊ณ  ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ์— ํ•ด๋‹นํ•˜๋Š” ์˜์ƒ์˜ ๊ฐœ์ˆ˜๋“ค์„ x, y, z ๋ผ๊ณ  ํ–ˆ์„ ๋•Œ

\[(x+1)(y+1)(z+1) = xyz + xy + xz + yz + x + y + z + 1\]

์ด๋ฏ€๋กœ ๋ชจ๋“  ์กฐํ•ฉ์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ตฌํ•œ answer ์—์„œ 1์„ ๋นผ์ฃผ๋ฉด ๋งž๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.


๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ & ๊ทผํ™ฉ

์ฝ”ํ…Œ ๋ฌธ์ œ ๋ฆฌ๋ทฐ๋ฅผ ์ •๋ง ์˜ค๋žœ๋งŒ์— ํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š”โ€ฆ
์ „์—ญ์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค!!!

์ „์—ญํ•˜๊ณ  m1 ๋งฅ๋ฏธ๋‹ˆ๋„ ๊ตฌ์ž…ํ•˜๊ณ  ๋ฐ์Šคํฌ ์…‹์—…ํ•˜๋Š๋ผ ๊ฝค ์ •์‹ ์—†๋Š” ๋‚˜๋‚ ๋“ค์„ ๋ณด๋ƒˆ๋‹ค. ์ „์—ญํ•œ์ง€๋Š” ์ด์ œ 1๋‹ฌ์ด ๋˜๊ฐ€๋Š”๋ฐ ์ด์ œ๋ถ€ํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ‘ธ๋Š” ๊ฒƒ์— ๋ฐ•์ฐจ๋ฅผ ๊ฐ€ํ•ด์•ผ๊ฒ ๋‹ค. ๊ธธ๋‹ค๋ฉด ๊ธธ๊ณ  ์งง๋‹ค๋ฉด ์งง์€ ๊ตฐ์ƒํ™œ์„ ๋ฌด์‚ฌํžˆ ๋งˆ์ณ ๋‹คํ–‰์ด๋‹ค.

์–ผ๋ฅธ ๋ณตํ•™ํ•˜๊ณ  ์‹ถ๋‹คโ€ฆ