프로그래머스 문제풀이/알고리즘 (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 공부기록