[ 프로그래머스 ] 의상

2025. 3. 20. 15:34·코딩테스트

📘요구 사항 정리

  • 코니는 매일 다른 옷을 조합하여 입는것을 좋아합니다.
  • 예를 들어 코니가 가진 옷이 아래와 같고,
  • 오늘 코니가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면
  • 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야합니다.
  • 코니는 각 종류별로 최대 1가지 의상만 착용할 수 있습니다. 예를 들어 위 예시의 경우 동그란 안경과 검정 선글라스를 동시에 착용할 수는 없습니다.
  • 착용한 의상의 일부가 겹치더라도, 다른 의상이 겹치지 않거나, 혹은 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 옷을 착용한 것으로 계산합니다.

 

📌 제약 조건

  • clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다.
  • 코니가 가진 의상의 수는 1개 이상 30개 이하입니다.
  • 같은 이름을 가진 의상은 존재하지 않습니다.
  • clothes의 모든 원소는 문자열로 이루어져 있습니다.
  • 모든 문자열의 길이는 1 이상 20 이하인 자연수이고 알파벳 소문자 또는 '_' 로만 이루어져 있습니다.

 

📌 구현코드

package pra.lv2.의상;

import java.util.HashMap;

public class answer_1 {

    public static void main(String[] args) {
        String[][] items = {
                {"yellow_hat", "headgear"},
                {"blue_sunglasses", "eyewear"},
                {"green_turban", "headgear"}
        };

        int data = solution(items);
        System.out.println(data);
    }
    public static int solution(String[][] clothes) {
        HashMap<String, Integer> clothsList = new HashMap<>();
        int countValue=1;
        //맵을 통해서, 종류 당 몇가지의 옷이 있는지 계산
        for(int i=0;i<clothes.length;i++){
            clothsList.put(clothes[i][1], clothsList.getOrDefault(clothes[i][1],0)+1);
        }

        for(String cloths : clothsList.keySet()) {
            countValue *= (clothsList.get(cloths) + 1);

        }

        return countValue-1 ;
    }

}

 

📌 구현코드 해설

  • 도저히 왜 틀린지 모르겠어서 해설 참고함 ^^ ,,
  • 마지막에 아무것도 입지 않은 경우를 포함해서 -1을 해줘야 한다고 한다 ..ㅠㅠㅋㅋㅋ생각도 못했음 ….ㅠㅠ
  • countValue *= (clothsList.get(cloths) + 1); 이 식은 아래와 같이 풀었다.
  • 종류가 1개일때 : a 인경우 → a
  • 종류가 2개일때 : a , b → a, b, ab
  • 종류가 3개일때 : a, b, c, → a , b, c, ab .. .abc

→ (a+1)(b+1) 뭐 이런식으로 나오는걸 알 수 있다.

'코딩테스트' 카테고리의 다른 글

[ 프로그래머스 dfs 자바 ] LV2 타겟 넘버  (0) 2025.06.20
[ 프로그래머스 ] 신고 결과 받기 - java  (0) 2025.03.20
[ 프로그래머스 ] 카드 뭉치  (1) 2025.02.25
[ 프로그래머스 ] 기능 개발  (0) 2025.02.25
[ 프로그래머스 ] 크레인 인형 뽑기 게임  (0) 2025.02.18
'코딩테스트' 카테고리의 다른 글
  • [ 프로그래머스 dfs 자바 ] LV2 타겟 넘버
  • [ 프로그래머스 ] 신고 결과 받기 - java
  • [ 프로그래머스 ] 카드 뭉치
  • [ 프로그래머스 ] 기능 개발
Adose
Adose
  • Adose
    도즈의 개발 블로그
    Adose
  • 전체
    오늘
    어제
    • 분류 전체보기 (182)
      • JAVA (22)
      • 스프링 | 스프링 부트 (30)
        • 스프링 시큐리티 (1)
        • 채팅 (1)
      • 스프링 프로젝트 (5)
        • JDBC - 은행앱 구현 (1)
        • Spring Boot - 독서 블로그 프로젝트 (3)
        • 개인 프로젝트 - CoreBrief (1)
      • 가상화 기술 (1)
      • Git (1)
      • 코딩테스트 (104)
        • 프로그래머스 입문 (68)
      • AWS (1)
      • 데이터베이스 (0)
      • CS 공부 (4)
      • 알고리즘, 자료구조 (5)
      • 우테코 프리코스 (7)
      • 트러블 슈팅 (1)
      • 프론트 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    LV2
    자바
    멋쟁이사자처럼
    프론트
    LV1
    Spring
    멋쟁이사자처럼백엔드
    Java
    스프링
    LV0
    스프링부트
    test
    springdatajdbc
    jdbc
    코딩테스트
    GIT
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Adose
[ 프로그래머스 ] 의상
상단으로

티스토리툴바