목록CodingTest/programmers (96)
기억은 짧고 기록은 길다

Link 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr Solution def solution(citations): citations = sorted(citations, reverse=True) answer = len(citations) while True: count = 0 for i in range(len(citations)): if citations[i] >= answer: count += 1 if count < answer: answer -= 1 else: return answer 🔑 key point: 1. citations = sorted(citations, re..

Link 코딩테스트 연습 - 행렬의 곱셈 [[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]] programmers.co.kr Solution 해당 문제의 Solution에서는 가장 기본적이고 이해하기 쉬운 풀이 방법을 보여주고 있다. 하지만 Other Solution에서 zip()을 이용한 풀이가 매우 좋은 풀이라고 생각한다. zip()과 zip(*arr2)를 직접 돌려보면서 왜 저러한 코드로 해결되었고 어떤 과정을 거쳐 해결되는지 이해하고 지나가길 바란다. def solution(arr1, arr2): r = len(arr1) c = len(arr2[0]) ..

Link 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr Solution 해당 문제를 풀 때 처음엔 if count < 0 break를 생각하지 못했다. if count < 0 break는 괄호가 '())...'이런식으로 이루어져 있을 경우를 판단한다. def solution(s): if s[0] == ')' or s[len(s) - 1] == '(' or len(s) % 2 != 0: return False count = 0 for i in range(len(s)..

Link 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr Solution 해당 문제는 permutations를 알고있다면 쉽게 해결할 수 있는 문제였고 에라토스테네스의 체의 개념을 알고 있었다면 시간을 줄이는데 많은 도움이 됐을 것이다. 해당 블로그에서 소수 찾기_1 문제의 글을 보면 기본적인 개념을 알 수 있을 것이다. 또한 permutations()와 함께 combinations()와 product()까지 함께 알아두면 좋기에 자세한 설명은 아래쪽에 첨부하니 참고하기 바란다. Other So..

Link 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr Solution 해당 문제에서 sorted()의 기준으로 lambda x: x * 3을 사용한 이유는 num의 인수값이 1000이하 이므로 3자리수로 맞춘 뒤 비교하기 위해 사용한 것이다. 문자열의 곱셈이기 때문에 ['111', '2', '6']인 경우 각각 '111111111', '222', '666'으로 연산이 이루어지고 문자열은 ASCII 코드 값으로 비교(첫번째 자리부터 순서대로 비..

Link 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr Solution 해당 문제는 Solution의 key point인 deque, Other Solution의 key point인 any를 사용하지 않아도 쉽게 풀 수 있는 문제였다. 하지만 이번 문제를 통해 any()의 사용법을 습득해갔으면 한다. 참고로 필자의 풀이인 Solution에 대한 설명을 덧붙이자면 while len(q) > 1인 이유는 q가 비어있게 되면 max(q, key=lambda x: x[1])[1]이 작동하지 않기 때문에 그 전까지만 w..