[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค :: ์œ„์žฅ (ํ•ด์‹œ, ๋ฌธ์ œ ํ’€์ด, ์ฝ”๋“œ)

์œ„์žฅ

๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/42578

๋ฌธ์ œ ์„ค๋ช…

์ŠคํŒŒ์ด๋“ค์€ ๋งค์ผ ๋‹ค๋ฅธ ์˜ท์„ ์กฐํ•ฉํ•˜์—ฌ ์ž…์–ด ์ž์‹ ์„ ์œ„์žฅํ•ฉ๋‹ˆ๋‹ค.

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

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

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

์ œํ•œ์‚ฌํ•ญ

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

์ž…์ถœ๋ ฅ ์˜ˆ

clothes return
[[yellow_hat, headgear], [blue_sunglasses, eyewear], [green_turban, headgear]] 5
[[crow_mask, face], [blue_sunglasses, face], [smoky_makeup, face]] 3

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์˜ˆ์ œ #1
headgear์— ํ•ด๋‹นํ•˜๋Š” ์˜์ƒ์ด yellow_hat, green_turban์ด๊ณ  eyewear์— ํ•ด๋‹นํ•˜๋Š” ์˜์ƒ์ด blue_sunglasses์ด๋ฏ€๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด 5๊ฐœ์˜ ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

1. yellow_hat
2. blue_sunglasses
3. green_turban
4. yellow_hat + blue_sunglasses
5. green_turban + blue_sunglasses

์˜ˆ์ œ #2
face์— ํ•ด๋‹นํ•˜๋Š” ์˜์ƒ์ด crow_mask, blue_sunglasses, smoky_makeup์ด๋ฏ€๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด 3๊ฐœ์˜ ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

1. crow_mask
2. blue_sunglasses
3. smoky_makeup

์ถœ์ฒ˜


์ฝ”๋“œ

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

using namespace std;

int solution(vector<vector<string>> clothes) {
    int answer = 1;
    map<string, vector<string>> kindMap;
    for(int i=0; i<clothes.size(); i++){
        string kind = clothes[i][1];
        kindMap[kind].push_back(clothes[i][0]);
    }
    map<string, vector<string>>::iterator iter;
    for(iter=kindMap.begin(); iter!=kindMap.end(); iter++){
        answer*=(iter->second.size()+1);
    }
    answer-=1;
    return answer;
}

 

ํ’€์ด

์–ด์ฐจํ”ผ ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ๋‹ต์€ ๊ฐ ์˜์ƒ์˜ ์กฐํ•ฉ์ด ์•„๋‹Œ ๊ทธ์ € ์กฐํ•ฉ์˜ ์ด ๊ฐฏ์ˆ˜์ด๋ฏ€๋กœ, ์‹์„ ์„ธ์šฐ๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ์ข…๋ฅ˜์— ์†ํ•˜๋Š” ์˜์ƒ์˜ ๊ฐฏ์ˆ˜์— 1์„ ๋”ํ•œ ๊ฐ’์„ ๋ชจ๋‘ ๊ณฑํ•œ ํ›„, 1์„ ๋นผ์ฃผ๋ฉด ๋‹ต์ด ๋‚˜์˜จ๋‹ค.

ํ•œ ์ข…๋ฅ˜์˜ ์˜์ƒ์ด n๊ฐœ๋ผ๋ฉด 0๊ฐœ ๋ถ€ํ„ฐ n๊ฐœ๊นŒ์ง€ ์˜์ƒ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ n+1์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์ƒ๊ธด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ์ข…๋ฅ˜๋งˆ๋‹ค ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋‘ ๊ณฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์— '์ŠคํŒŒ์ด๋Š” ํ•˜๋ฃจ์— ์ตœ์†Œ ํ•œ ๊ฐœ์˜ ์˜์ƒ์€ ์ž…์Šต๋‹ˆ๋‹ค'๋ผ๊ณ  ๋‚˜์™€์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์˜์ƒ์ด 0๊ฐœ์ธ ํ•œ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ๋นผ์ฃผ๋ฉด ๋‹ต์ด ๋œ๋‹ค.

map ์ ‘๊ทผ ์‹œ iterator ์‚ฌ์šฉํ•ด์„œ iter->first๋‚˜ iter->second๋กœ ์ ‘๊ทผํ•˜๊ธฐ

 

์ฑ„์  ๊ฒฐ๊ณผ

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด

unordered_map์„ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค.

๋˜ํ•œ map์—์„œ string์ธ key์™€ ์—ฐ๊ฒฐ๋˜๋Š” value๋ฅผ ๊ตณ์ด vector๋กœ ํ•˜์ง€ ์•Š๊ณ  int๋กœ๋งŒ ์ฒ˜๋ฆฌํ•ด์„œ ๊ฐฏ์ˆ˜๋งŒ ์„ธ๋„ ๊ดœ์ฐฎ๋‹ค.

๋ฐ˜์‘ํ˜•