프로그래머스 문제풀이/알고리즘 (JAVA)

[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 2 (23~24번 문제풀이) / Level 0 (224/224) / Level 1 (77/77)

남건욱 2024. 1. 8. 10:43

목차

    반응형
    23. 행렬의 곱셈

    문제

    class Solution {
        public int[][] solution(int[][] arr1, int[][] arr2) {
            int[][] answer = new int[arr1.length][arr1[0].length];
            
            for(int i=0; i<arr1.length; i++){
                for(int j=0; j<arr2[0].length; j++){
                    for(int k=0; k<arr1[0].length; k++){
                        answer[i][j] += arr1[i][k] * arr2[k][j];
                    }
                }
            }
                 
            return answer;
        }
    }

    <작성한 코드>

    행열의 곱셈은 첫 번째 행 * 첫 번째 열의 원소를 모두 곱해서 더해주면 된다. 따라서 반복문을 3번 중첩해서 사용했으며 처음반복문은 arr1의 길이만큼, 두 번째 반복문은 arr2의 한 배열의 길이를, 세 번째 반복문에서는 arr1의 한 배열의 길이만큼 반복시켰다. 그 뒤 내부에서는 answer [i][j]에 arr1의 0~i번째까지의 k번째 수와 arr2의 k번째 배열의 0~j번째 원소를 더해주면 행렬의 곱이 완성된다. 그 뒤 answer을 반환해 줬다.

     

     

     

    24. 의상

    문제

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

    <작성한 코드>

    map을 사용해서 각 옷의 종류별로 개수를 저장했다. forEach문을 사용해서 반복했고 type은 cloth의 두번째 원소로 저장했다. 그 뒤 map에 type을 키값으로갖도록 하였고 벨류는 map에서 type을 검색해서 가져오고 만약 없다면 0을 가져온다. 그리고 그 값에 1을 더해서 다시 넣어준다. 옷들의 타입과 갯수를 저장한 뒤 경우의 수를 구하기 위해 다시 forEach문을 사용했다. answer에 벨류값+1을 차례로 곱해준다. 그 뒤 반환할 때 아무것도 입지 않는 경우의 수를 빼주기 위해 answer-1을 해서 반환하였다.

    반응형
    프로필사진

    남건욱's 공부기록