[Programmers] Lv2. μ˜μƒ | C++

2023. 6. 15. 19:22ㆍCoding Test/Programmers

πŸ”—λ¬Έμ œ λ³΄λŸ¬κ°€κΈ°
 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ 맀칭. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 맀칭 λ°›μœΌμ„Έμš”.

programmers.co.kr

 

πŸ‘¨‍πŸ’»ν’€μ΄ κ³Όμ •

 

μ²˜μŒμ—λŠ” λ°±νŠΈλž˜ν‚Ήμ„ 톡해 μ‘°ν•©μœΌλ‘œ ν’€μ—ˆλŠ”λ°, ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 1λ²ˆμ—μ„œ μ‹œκ°„ μ΄ˆκ³Όκ°€ λ‚¬μŠ΅λ‹ˆλ‹€. μ•„λ¬΄λž˜λ„ μ΅œλŒ€ μž…λ ₯ λ²”μœ„μΈ 30개의 옷이 λ“€μ–΄μžˆμ—ˆλ˜ 것 κ°™λ„€μš”. μ–΄λ–»κ²Œ ν’€ 지 κ³ λ―Όν•˜λ‹€κ°€, μ–΄λŠ ν•œ λΆ„μ˜ μˆ˜ν•™μ  아이디어λ₯Ό 보고 κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€.

 

  • μ½”λ‹ˆλŠ” ν•˜λ£¨μ— μ΅œμ†Œ ν•œ 개의 μ˜μƒμ€ μž…λŠ”λ‹€.
  • μ˜μƒ μ’…λ₯˜ A의 옷 κ°œμˆ˜κ°€ n개라면, ν•΄λ‹Ή μ’…λ₯˜μ˜ μ˜·λ“€ 쀑 ν•˜λ‚˜λ₯Ό 골라 μž…κ±°λ‚˜, μ•ˆ μž…λŠ” 경우의 μˆ˜λŠ” λ‹€μŒκ³Ό κ°™λ‹€.
    • \( {n \choose 1} + {n \choose 0} = n + 1 \)
  • λ”°λΌμ„œ, μ˜μƒ μ’…λ₯˜ A, B, C의 각 옷 κ°œμˆ˜κ°€ n, m, k개라면, 총 경우의 μˆ˜λŠ” λ‹€μŒκ³Ό κ°™λ‹€.
    • \( ({n \choose 1} + {n \choose 0}) \times ({m \choose 1} + {m \choose 0}) \times ({k \choose 1} + {k \choose 0}) - 1\)
    • 문제 μ‘°κ±΄μ—μ„œ μ½”λ‹ˆλŠ” 무쑰건 ν•œ 개 이상 μ˜μƒμ„ μž…λŠ”λ‹€κ³  ν–ˆμœΌλ‹ˆ, 아무것도 μž…μ§€ μ•Šμ€ 경우λ₯Ό ν•˜λ‚˜ λΊ€ 것 

 

이런 λ¬Έμ œλŠ” μˆ˜ν•™μ  아이디어 μ„ΌμŠ€κ°€ 쒋지 μ•ŠμœΌλ©΄ λͺ» ν’€λ €λ‚˜μš”...

 

βœοΈμ†ŒμŠ€ μ½”λ“œ 및 κ²°κ³Ό

#include <string>
#include <vector>
#include <map>
using namespace std;
using ClothesCount = map<string, int>;

ClothesCount RegisterClothes(const vector<vector<string>>& clothes) {
    ClothesCount result;

    for (const auto clothesInfo : clothes) {
        string type = clothesInfo[1];
        result[type]++;
    }
    return result;
}

int FindCombination(const ClothesCount& clothes) {
    int count = 1;

    for (const auto clothesCount : clothes)
        count *= (clothesCount.second + 1);        // nC1 + nC0
    return count - 1;                              // 아무것도 μ•ˆ μž…λŠ” 경우 μ œμ™Έ
}


int solution(vector<vector<string>> clothes) {
    ClothesCount myClothes = RegisterClothes(clothes);
    int answer = FindCombination(myClothes);
    return answer;
}

 

 

 

728x90
λ°˜μ‘ν˜•