Algorithm/Programmers80 [프로그래머스] 행렬의 곱셈 / 파이썬 / Python 💡solutions ) 💬 예를 들어, AXB 행렬과 BXC 행렬의 곱셈 -> 두 행렬에서 B의 자리가 같은 숫자일 때만 곱셈이 가능하며 -> 곱셈의 결과는 AXC행렬이 된다. 💬 아래 코드에서 answer은 곱셈의 결과가 되는 AXC행렬이고, 💬 i가 A / j가 C / k가 B로 삼중 반복문으로 행렬의 곱셈을 구현했다. 🎫code ) def solution(arr1, arr2): r = len(arr1) c = len(arr2[0]) answer = [[0]*c for _ in range(r)] for i in range(r): for j in range(c): for k in range(len(arr1[0])): answer[i][j] += arr1[i][k]*arr2[k][j] return ans.. 2020. 10. 3. [프로그래머스] N개의 최소공배수 / 파이썬 / Python 💡solutions ) 💬 주어진 숫자 리스트를 오름차순으로 정리한 후 가장 큰 값인 max를 구한다. 💬 나머지 숫자들이 max의 약수인지 먼저 확인하고, 약수가 아닌 경우 max의 그 다음 배수를 확인하는 과정을 반복한다. -> 나머지 숫자들이 모두 약수가 되는 경우가 모든 숫자에 대한 최소공배수가 된다. (max의 배수는 max가 이미 약수가 된다.) 🎫code ) def solution(arr): answer = 0 arr.sort() max = arr[-1] answer = max while True: for i in range(len(arr)-1): if answer % arr[i] != 0: break else: return answer answer += max 📌 description ) .. 2020. 10. 2. [프로그래머스] 삼각 달팽이 / 파이썬 / Python / 월간 코드 챌린지 시즌1 💡solutions ) 💬 피라미드 배열 만들고, 삼각형을 기준으로 if문 처리 (각 선분에 해당하는 3가지 조건으로 처리) 💬 해당 문제를 풀면서 list index out of range가 많이 나서 고생을 좀 했다..!!!!😂 💬 인덱스 에러가 나지 않게 while문 안에서 break 조건을 적절히 넣어줘야 한다 ->j, k 범위를 체크하거나 arr[j][k] 값이 있는지 확인하는 조건을 넣었음 💬 최근 본 코테에서 2차원 배열 리스트를 활용하는 문제가 나왔는데 상당히 어렵게 느껴졌다. 해당 유형의 문제를 더 연습해야겠다! 🎫code ) def solution(n): arr = [[0] * _ for _ in range(1, n + 1)] num = 1 j = 0 k = 0 for i in rang.. 2020. 9. 28. [프로그래머스] n진수 게임 / 파이썬 / Python / 2018 KAKAO BLIND RECRUITMENT 💡solutions ) 💬 진수 변환을 잘 몰랐는데 이번 문제 풀면서 정확히 알게 됐다. 해당 진수로 숫자를 나누며 나머지를 누적하는 방식. 💬 진수 변환 함수는 재귀로도 풀 수 있는데 이번에는 while 반복문을 이용해서 구했고, 이때 0인 경우를 빼먹지 않기 위해 if조건문을 넣어야 한다. 💬 solution 함수에서 두 가지 for문 ① 첫 번째는 t*m까지의 숫자를 진수 변환 해주는 것. ② 두 번째는 튜브가 말해야 하는 숫자만 찾는 것. 🎫code ) def change(num, n): numbers = '0123456789ABCDEF' r = '' if num == 0: return '0' while num > 0: r = numbers[num % n] + r num = num // n ret.. 2020. 9. 27. [프로그래머스] 영어 끝말잇기/ 파이썬 / Python/ Summer/Winter Coding(~2018)/ 카카오 코테 💡solutions ) 💬 로직은 크게 끝말잇기가 유효한지 for문을 돌며 확인 -> 불가능한 경우는 총 2가지(이미 말한 단어를 다시 말한 경우와 앞단어의 마지막과 뒷단어의 첫 번째가 같지 않은 경우) * 번호와 차례를 구할 때는 아랫처럼 구하고자 하는 정확한 값이 나오도록 덧셈 처리 💬 번호를 나타내는 idx는 i를 n으로 나눈 나머지에 +1를 해주기 💬 차례를 나타내는 cnt는 n의 배수 번째인지 아닌 지에 따라 분기 처리해야 함 🎫code ) def solution(n, words): tmp = [words[0]] # 첫 번째 단어는 먼저 넣고 시작 for i in range(1, len(words)): # 두 번째 단어부터 시작해서 끝말잇기 유효한지 확인 if words[i - 1][-1] !=.. 2020. 9. 25. [프로그래머스] 캐시/ 파이썬/ Python/ deque/ LRU / 2018 KAKAO BLIND RECRUITMENT /카카오 코테 💡solutions ) LRU(Least Recently Used) 알고리즘 : 가장 최근에 사용되지 않은 것이라는 의미로, 오랫동안 사용하지 않았던 데이터는 앞으로도 사용할 확률이 적다는 것이다. 이는 한정된 캐시 사이즈가 꽉 차고 새로운 캐시를 넣으려고 할 때, 기존 캐시 중 최근까지 가장 사용되지 않은 데이터를 제거하는 알고리즘이다. 💬 첫 번째 if문 -> cacheSize가 0인 경우 참조하는 값이 없으므로 cities 모든 요소가 cache miss로 실행시간이 5이다. 💬 대소문자 구분하지 않으니 모두 소문자로 처리 -> lower() 메소드 💬 for문 -> 각 city가 buffer에 있는 지 확인하는데 ① 없는 경우 buffer가 cacheSize만큼 꽉 차 있는 지 확인한다. - ca.. 2020. 9. 24. 이전 1 ··· 5 6 7 8 9 10 11 ··· 14 다음