반응형
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을 해서 반환하였다.
반응형
'프로그래머스 문제풀이 > 알고리즘 (JAVA)' 카테고리의 다른 글
남건욱's 공부기록