본문 바로가기

분류 전체보기97

[프로그래머스 kotlin] 행렬의 곱셈 문제 해결 POINT연산은 앞쪽의 열과 뒤쪽의 행이 같아야 이루어질 수 있다.연산의 결과 행렬의 크기는 앞쪽의 행 * 뒤쪽의 열 이다.answer[i][j] += arr1[i][k] * arr2[k][j] 이다  ,이 때 k는 앞쪽의 열이자 뒤쪽의 행 풀이 코드class Solution { fun solution(arr1: Array, arr2: Array): Array { val answer = Array(arr1.size) { IntArray(arr2[0].size) } for(i in 0 until arr1.size){ // 행 길이 for(j in 0 until arr2[0].size){ // 열의 길이 var sum=0 for.. 2024. 6. 20.
[프로그래머스 kotlin] n^2 배열 자르기 문제와 영상처럼 이차원 배열을 구현하여 직접 대입 후 문제를 해결하려고 시도한다면 시간초과가 발생 할 것 이다. 제한사항 중 1 배열에 삽입하는데 O(n^2) 시간 발생   따라서 2차원 배열을 직접 구현하지 않고 1차원 배열을 이용해 문제를 풀어야 한다. 규칙을 찾았다 ! !첫 번째 규칙, 여기서 n x n 배열일 때, (i / n) 은 행의 값이 되고, (i % n)은 열의 값이 된다.                     위의 사진으로 예시를 들면, 7/4 = 1  행의 값은 1   //////   7%4 = 3 열의 값은 3 두 번째 규칙, 배열의 자리의 값은 배열 인덱스의 (MAX(행,렬)+1)의 값이다!                     예를 들자면,   (1,3)의 값은 4 !  (0,3).. 2024. 6. 19.
[TIL] 06. 18 https://1chanhue1.tistory.com/44 [프로그래머스] 연속 부분 수열 합의 개수문제 설명철호는 수열을 가지고 놀기 좋아합니다. 어느 날 철호는 어떤 자연수로 이루어진 원형 수열의 연속하는 부분 수열의 합으로 만들 수 있는 수가 모두 몇 가지인지 알아보고 싶어졌습니1chanhue1.tistory.comhttps://1chanhue1.tistory.com/45 이 경우 예시 ((((, [[{]] 이런 상황  ) 문제 해결 point1. 배열에서 열린 문자를 만난다면 스택" data-og-host="1chanhue1.tistory.com" data-og-source-url="https://1chanhue1.tistory.com/45" data-og-url="https://1chanhue1.. 2024. 6. 18.
다이나믹 프로그래밍(DP)이란 무엇일까 ? Dynamic Programming (동적 계획법)이란 ?동적계획법(다이나믹 프로그래밍) 이란, 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법을 말한다. 이것은 부분 문제 반복과 최적 부분 구조를 가지고 있는 알고리즘을 일반적인 방법에 비해 더욱 적은 시간을 내어 풀 때 사용한다. 예를 들어 코딩 테스트 문제를 풀다 보면 아래와 같은 제한사항이 종종 나오는데, 간혹 제한사항에 주어지는 숫자의 범위가 크고 경우의 수가 엄청난 값의 문제들이 대부분 DP를 이용해서 풀어야 하는 것이라고 알게 되었다. Dynamic Programming 알고리즘 조건 1) problem이 sub-problem으로 나누어 질 때2) 각 sub-problem의 solution을 통해 상위 problem의 솔루션을 구할 .. 2024. 6. 18.