πŸ“ μ•Œκ³ λ¦¬μ¦˜/Programmers

[C++/PGS] Lv.2 : μ˜μƒ/μœ„μž₯ (ν•΄μ‹œ)

xxilliant 2023. 4. 13. 16:44
728x90
λ°˜μ‘ν˜•

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

(μ›λž˜ 문제 제λͺ©μ΄ μœ„μž₯μ΄μ—ˆλŠ”λ° μ˜μƒμœΌλ‘œ λ°”λ€Œμ—ˆλ‹€! κ΅¬ν˜„ λ‚΄μš©μ€ κ°™μŒ)

 

문제 μ„€λͺ…(μœ„μž₯)

μŠ€νŒŒμ΄λ“€μ€ 맀일 λ‹€λ₯Έ μ˜·μ„ μ‘°ν•©ν•˜μ—¬ μž…μ–΄ μžμ‹ μ„ μœ„μž₯ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μŠ€νŒŒμ΄κ°€ κ°€μ§„ 옷이 μ•„λž˜μ™€ κ°™κ³  였늘 μŠ€νŒŒμ΄κ°€ λ™κ·Έλž€ μ•ˆκ²½, κΈ΄ μ½”νŠΈ, νŒŒλž€μƒ‰ ν‹°μ…”μΈ λ₯Ό μž…μ—ˆλ‹€λ©΄ λ‹€μŒλ‚ μ€ μ²­λ°”μ§€λ₯Ό μΆ”κ°€λ‘œ μž…κ±°λ‚˜ λ™κ·Έλž€ μ•ˆκ²½ λŒ€μ‹  κ²€μ • μ„ κΈ€λΌμŠ€λ₯Ό μ°©μš©ν•˜κ±°λ‚˜ ν•΄μ•Ό ν•©λ‹ˆλ‹€.

 

μ’…λ₯˜μ΄λ¦„
μ–Όκ΅΄ λ™κ·Έλž€ μ•ˆκ²½, κ²€μ • μ„ κΈ€λΌμŠ€
μƒμ˜ νŒŒλž€μƒ‰ ν‹°μ…”μΈ 
ν•˜μ˜ μ²­λ°”μ§€
κ²‰μ˜· κΈ΄ μ½”νŠΈ

μŠ€νŒŒμ΄κ°€ κ°€μ§„ μ˜μƒλ“€μ΄ λ‹΄κΈ΄ 2차원 λ°°μ—΄ clothesκ°€ μ£Όμ–΄μ§ˆ λ•Œ μ„œλ‘œ λ‹€λ₯Έ 옷의 μ‘°ν•©μ˜ 수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄μ£Όμ„Έμš”.


 

λ§Œλ§Œν•˜κ²Œ λ΄€λ‹€κ°€ ν‹€λ¦° 문제!

경우의 수λ₯Ό κ΅¬ν•˜λŠ” 식을 잘 생각해보아야 ν•œλ‹€. 

 

λ‚˜λŠ” μ²˜μŒμ— 일단 answer에닀가 옷의 갯수λ₯Ό λ”ν•˜κ³ , μ’…λ₯˜μ˜ μˆ˜κ°€ 2개 이상일 λ•Œ 경우의 수λ₯Ό κ³±ν•˜λŠ” 과정을 κ±°μ³€λŠ”λ°..

νžˆλ“  ν…ŒμΌ€μ—μ„œ 많이 ν‹€λ Έλ‹€.

κ·Έλž˜μ„œ 두 번째 λ°©λ²•μœΌλ‘œ, 각 μ’…λ₯˜λ§ˆλ‹€ μ•ˆ μž…λŠ” κ²½μš°κΉŒμ§€ ν¬ν•¨ν•΄μ„œ κ³±ν•΄μ€€ λ‹€μŒμ—

λͺ¨λ“  μ˜·μ„ μž…μ§€ μ•ŠλŠ” 1κ°€μ§€ 경우λ₯Ό λΉΌμ£Όμ—ˆλ”λ‹ˆ λ§žμ•˜λ‹€!

 

μ—­μ‹œ μˆ˜ν•™μ€ μ‹«μ–΄,,,

 

 

λ‚˜μ˜ 풀이

#include <string>
#include <vector>
#include <map>
using namespace std;

int solution(vector<vector<string>> clothes) {
    int answer = 1;
    map<string, int> clist;
    
    for(int i=0; i<clothes.size(); ++i){
        clist[clothes[i][1]]++;
    }
    for(auto i : clist){
        answer *= (i.second+1); // μ•ˆμž…λŠ”κ²½μš°, 1λ²ˆμž…λŠ”κ²½μš°, 2λ²ˆμž…λŠ”κ²½μš°, ...
    }
    answer --; // λͺ¨λ‘ μ•ˆμž…λŠ” 경우 μ œμ™Έ
    
    return answer;
}

 

728x90
λ°˜μ‘ν˜•