[programmers] μ˜μƒ - Java

μ½”λ‹ˆμ˜ μ˜μƒ μ‘°ν•© λ¬Έμ œλŠ” HashMap을 ν™œμš©ν•˜μ—¬ 각 μ˜μƒ μœ ν˜•μ˜ 수λ₯Ό μ €μž₯ν•˜κ³ , 이λ₯Ό 톡해 μ„œλ‘œ λ‹€λ₯Έ μ˜μƒ μ‘°ν•©μ˜ 수λ₯Ό κ³„μ‚°ν•œλ‹€. 각 μ˜μƒ μœ ν˜•λ³„λ‘œ μ˜μƒμ„ μž…μ§€ μ•Šμ•˜μ„ λ•Œμ˜ 경우의 수λ₯Ό κ΅¬ν•˜κΈ° μœ„ν•΄ μ˜μƒμ˜ μˆ˜μ— 1을 λ”ν•œ 값을 κ³±ν•˜κ³ , λ§ˆμ§€λ§‰μœΌλ‘œ λͺ¨λ“  μ˜μƒμ„ μž…μ§€ μ•Šμ•˜μ„ 경우λ₯Ό κ³ λ €ν•˜μ—¬ 1을 λΉΌμ€€λ‹€. 이 문제λ₯Ό 톡해 μ‘°ν•© 곡식을 μ½”λ“œλ‘œ κ΅¬ν˜„ν•˜λŠ” 방법을 읡힐 수 μžˆλ‹€.
DriedPollack's avatar
Mar 15, 2024
[programmers] μ˜μƒ - Java

μ˜μƒ

문제 μ„€λͺ…

μ½”λ‹ˆλŠ” 맀일 λ‹€λ₯Έ μ˜·μ„ μ‘°ν•©ν•˜μ—¬ μž…λŠ”κ²ƒμ„ μ’‹μ•„ν•©λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄ μ½”λ‹ˆκ°€ κ°€μ§„ 옷이 μ•„λž˜μ™€ κ°™κ³ , 였늘 μ½”λ‹ˆκ°€ λ™κ·Έλž€ μ•ˆκ²½, κΈ΄ μ½”νŠΈ, νŒŒλž€μƒ‰ ν‹°μ…”μΈ λ₯Ό μž…μ—ˆλ‹€λ©΄ λ‹€μŒλ‚ μ€ μ²­λ°”μ§€λ₯Ό μΆ”κ°€λ‘œ μž…κ±°λ‚˜ λ™κ·Έλž€ μ•ˆκ²½ λŒ€μ‹  κ²€μ • μ„ κΈ€λΌμŠ€λ₯Ό μ°©μš©ν•˜κ±°λ‚˜ ν•΄μ•Όν•©λ‹ˆλ‹€.
μ’…λ₯˜
이름
μ–Όκ΅΄
λ™κ·Έλž€ μ•ˆκ²½, κ²€μ • μ„ κΈ€λΌμŠ€
μƒμ˜
νŒŒλž€μƒ‰ ν‹°μ…”μΈ 
ν•˜μ˜
μ²­λ°”μ§€
κ²‰μ˜·
κΈ΄ μ½”νŠΈ
  • μ½”λ‹ˆλŠ” 각 μ’…λ₯˜λ³„λ‘œ μ΅œλŒ€ 1κ°€μ§€ μ˜μƒλ§Œ μ°©μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μœ„ μ˜ˆμ‹œμ˜ 경우 λ™κ·Έλž€ μ•ˆκ²½κ³Ό κ²€μ • μ„ κΈ€λΌμŠ€λ₯Ό λ™μ‹œμ— μ°©μš©ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.
  • μ°©μš©ν•œ μ˜μƒμ˜ 일뢀가 κ²ΉμΉ˜λ”λΌλ„, λ‹€λ₯Έ μ˜μƒμ΄ κ²ΉμΉ˜μ§€ μ•Šκ±°λ‚˜, ν˜Ήμ€ μ˜μƒμ„ μΆ”κ°€λ‘œ 더 μ°©μš©ν•œ κ²½μš°μ—λŠ” μ„œλ‘œ λ‹€λ₯Έ λ°©λ²•μœΌλ‘œ μ˜·μ„ μ°©μš©ν•œ κ²ƒμœΌλ‘œ κ³„μ‚°ν•©λ‹ˆλ‹€.
  • μ½”λ‹ˆλŠ” ν•˜λ£¨μ— μ΅œμ†Œ ν•œ 개의 μ˜μƒμ€ μž…μŠ΅λ‹ˆλ‹€.
μ½”λ‹ˆκ°€ κ°€μ§„ μ˜μƒλ“€μ΄ λ‹΄κΈ΄ 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

solution.java

import java.util.*; class Solution { public int solution(String[][] clothes) { HashMap<String, Integer> clothesMap = new HashMap<>(); for (String[] cloth : clothes) { String type = cloth[1]; clothesMap.put(type, clothesMap.getOrDefault(type, 0) + 1); } System.out.println(clothesMap); int answer = 1; for (int count : clothesMap.values()) { answer *= (count + 1); } return answer - 1; } }
 

핡심 ν‚€μ›Œλ“œ

  • HashMap을 μƒμ„±ν•΄μ„œ 각 μœ ν˜•μ˜ 옷 수λ₯Ό μ €μž₯ν•œλ‹€.
  • clothes λ°°μ—΄μ˜ 각 행을 λ°˜λ³΅ν•΄μ„œ μœ ν˜•λ³„λ‘œ 옷이 λͺ‡κ°œλ‚˜ μžˆλŠ”μ§€ μ•Œμ•„λ‚Έλ‹€.
  • κ³±μ…ˆμ„ ν•˜κΈ° μœ„ν•΄ λ³€μˆ˜λ₯Ό 1둜 μ„€μ •ν•˜κ³ , 옷의 μ’…λ₯˜λ³„λ‘œ μ˜·μ„ μž…μ§€ μ•Šμ•˜μ„ λ•Œμ˜ 경우의 수λ₯Ό κ΅¬ν•˜κΈ° μœ„ν•΄ 옷의 μˆ˜μ— 1을 λ”ν•œ 값을 κ³±ν•œλ‹€.
  • λ§ˆμ§€λ§‰μœΌλ‘œ λͺ¨λ“  μ˜·μ„ μž…μ§€ μ•Šμ•˜μ„ κ²½μš°κ°€ μžˆμœΌλ―€λ‘œ 1을 λΉΌμ€€λ‹€.
 

κ²°λ‘ !

ν•΄λ‹Ή 문제λ₯Ό ν’€λ©΄μ„œ μ‘°ν•© 곡식을 ν™œμš©ν•˜λŠ” 법을 μ½”λ“œλ‘œ 읡힐 수 μžˆμ—ˆλ‹€.
 
Share article

πŸ‘¨πŸ»β€πŸ’»DriedPollack's Blog