• Home

My Codegate

  • Home

프로그래머스 의상 자바 문제풀이

2023/12/21 Posted by Codegate Java No Comments

문제 링크

문제 내용은 입력으로 의상 이름과 의상 종류를 받은 뒤, 중복되지 않고 입을 수 있는 최대 조합을 찾아줘야 하는데, 주의해야 할 점은, headgear와 eyewear 의상 종류가 이렇게 있을 경우, 한 쪽은 의상을 입지 않아도 되지만, 의상을 아예 입지 않을 수는 없기 때문에 이걸 주의해줘야 한다.

import java.util.HashMap;
import java.util.Map;

public class Clothes {

  public static int solution(String[][] clothes) {

    HashMap<String, Integer> map = new HashMap<>();
    for (int i = 0; i < clothes.length; i++) {
      map.merge(clothes[i][1], 1, Integer::sum);
    }

    int answer = 1;
    for (Map.Entry<String, Integer> entry : map.entrySet()) {
      answer *= entry.getValue() + 1;
    }

    return answer - 1;
  }

}

문제를 풀어보자면 결국 최대 조합은 의상 종류 별 옷 갯수를 모두 곱해주면 끝인데, Map에 의상 종류를 Key로 하고, Value인 옷 이름은 중요하지 않기 때문에 1로 처리해서 계속 넣어주면 된다.

이후 Map에 의상 종류와 옷 갯수를 모두 넣어주고 나면, Map에 넣은 값을 entrySet()으로 꺼내주면서 곱해야 하는데 의상 종류별로 입지 않는 경우도 있기 때문에, 곱하기 전 의상 종류별로 꼭 + 1을 해서 넣어줘야 하고 답을 Return 하기 전에는 옷을 모두 입지 않는 경우는 없기 때문에 -1을 해서 Return해주면 끝이다.

No Comments
0

Leave a Reply Cancel Reply

Introduction

My Codegate

Latest Posts

  • Google Search Console API 연동방법
  • 인텔리제이 Gradle Dependency 최신 버전 보는 방법
  • Wallet-Tracker 개발일지
  • Moralis API 자바로 호출방법
  • IntelliJ Commit 후 Push 따로 하는 방법

Categories

  • My Project (4)
  • Java (42)
  • Algorithm (161)
    • Java (152)
    • Algorithm Knowledge (3)
    • Algorithm site usage (6)
  • Vue.js (1)
  • Spring (4)
  • Docker (2)
  • IntelliJ (20)
  • Uncategorized (7)

Recent Comments

  • Codegate on Hello world!
  • A WordPress Commenter on Hello world!

© 2025 — mycodegate.com

Prev Next