[Programmers][Java] 위장

8310 단어 Java해시Java

https://programmers.co.kr/learn/courses/30/lessons/42578?language=java


📒 문제


📒 제한사항


🌻 코드

import java.util.*;
class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        int cnt = 0;
        List<String> Kinds = new ArrayList<>(); // 옷의 종류를 담을 리스트
        for (int i = 0; i < clothes.length; i++) {
            // 중복하지 않을 경우 add
            if (!Kinds.contains(clothes[i][1])) Kinds.add(clothes[i][1]);
        }

        int b[] = new int[Kinds.size()]; //해당 옷 종류의 수를 담을 배열

        for (int i = 0; i < b.length; i++) {
            for (int k = 0; k < clothes.length; k++) {
                // 해당할 경우 ++
                if (Kinds.get(i).equals(clothes[k][1])) cnt++;
            }
            b[i] = cnt + 1;
            cnt = 0; // 초기화
        }
        for (int i = 0; i < b.length; i++) {
            answer *= b[i];
        }
        answer -= 1; // 전부다 선택하지 않을경우 즉, 아무것도 착용하지 않을경우
        return answer;
    }
}

💡 정리하기

👉 무작정 맞는 수학 공식을 찾으려고 하다보니 방법을 찾지 못했었다. IC님의 도움으로 문제의 수학공식을 이해할 수 있었다.🙇‍ 먼저 옷의 종류에 따른 옷의 개수를 알아야했고, 공식에 맞게 계산을 해줘야했다. IntelliJ와 프로그래머스의 실행결과가 다르게 나와서 헤매게되었다. 이때도 IC님이 문제점을 찾아내주셨다. String 비교는 꼭.. equals.. IntelliJ에서 바른 결과가 나오길래.. 신경쓰지 않았는데 신경썼어야했다.

좋은 웹페이지 즐겨찾기