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

Link 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr Solution def isBalanced(s): return s.count('(') == s.count(')') def isCorrect(s): if s[0] == ')': return False count = 0 for i in range(len(s)): if s[i] == '(': count += 1 else: count -= 1 if count < 0: return False return count == 0 def solution(p): answe..

Link 코딩테스트 연습 - 피보나치 수 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = programmers.co.kr Solution 필자는 해당 문제를 메모이제이션을 활용하여 해결하였다. 하지만 채점에서 몇개가 런타임에러가 발생하여 테스트 케이스에 100000을 추가해보았고 그 결과 재귀함수의 최대 재귀한도 깊이가 초과(RecursionError: maximum recursion depth ex..

Link 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr Solution 해당 문제는 재귀함수를 통해 해결할 수 있다. len(numbers) == 0 and target == 0 은 연산의 결과와 target이 같음을 나타내고 len(numbers) == 0 and target != 0 은 연산의 결과와 target이 다름을 나타낸다. def solution(numbers, target): if len(numbers) == 0 and target == 0..

Link 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr Solution def solution(s): answer = [] s = s.lstrip('{').rstrip('}').split('},{') t = [] for i in range(len(s)): t.append(s[i].split(',')) d = {} for i in range(len(t)): for j in range(len(t[i])): if t[i][j] in list(d.keys()): ..

Link 코딩테스트 연습 - 최솟값 만들기 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱 programmers.co.kr Solution def solution(A, B): answer = 0 for i, j in zip(sorted(A), sorted(B, reverse=True)): answer += i * j return answer 🔑 key point: sorted(A), sorted(B, reverse=True) 📌 Tip: zip() Other Solution def solution(A, B): return sum(a * b for a, ..

Link 코딩테스트 연습 - 최댓값과 최솟값 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를 programmers.co.kr Solution def solution(s): answer = list(map(int, s.split(' '))) return f'{min(answer)} {max(answer)}' 🔑 key point: list(map(int, s.split(' ')))