본문 바로가기

알고리즘 & 코딩테스트/코딩테스트

(45)
Programmers Lv.1 "내적" 내적(dot-product)에 대한 수식이 주어지고 이를 그대로 구현하면 되는 문제이다. 리스트 a, b가 주어지고 각 index에 해당하는 값들을 서로 곱해서 총합을 구하면 된다. 즉, 전에 포스팅에서 언급했듯 병렬처리를 하면 쉽게 해결할 수 있고, zip( )을 사용하면 바로 해결된다. 그렇지만 이번에는 Python의 numpy 라이브러리를 이용한 풀이를 소개해보겠다. 먼저 numpy에 대해 소개하면, numpy는 리스트를 행렬로 취급하여 처리하는 수학에 대한 처리 라이브러리이다. 또한 내적(dot-product)이 내장 메서드로 포함되어있어 쉽게 해결할 수 있다. import numpy as np def solution(a, b): a = np.array(a) b = np.array(b) retur..
Programmers Lv.1 "수박수박수박수박수박수?" "수박"이 연달아 나오는 문자열을 만드는 문제이다. 만들어야 될 문자열의 길이가 주어지면 위의 패턴을 유지한 채 문자열을 만들면 된다. 단, 전의 "가운데 글자 가져오기" 포스팅과 같이 패턴이 2글자이므로 이 역시 문자열의 순서에 따라 다른 문자열이 붙는다. (말을 뭔가 이상하게 한 것 같긴 한데..ㅎ 잘 알아들었을거라 생각한다.) def solution(n): answer = '' for loop in range(n): answer += '수' if loop%2==0 else '박' return answer
Programmers Lv.1 "가운데 글자 가져오기" 요 문제는 단어의 길이가 짝수이냐 홀수이냐에 따라 경우를 나눌 수 있다. 문제에서 얘기하는 '가운데 글자'라고 하는것은 정 중앙에 위치한 글자를 의미하고 이는 처음에 주어진 문자열 s의 길이에 따라(짝/홀 여부) 한글자가 되기도, 두 글자가 되기도 한다는 말이다. 이를 유의해서 아래 코드를 보면 이해할 수 있다. def solution(s): length = len(s) if length%2==0: return s[int(length/2-1):int(length/2+1)] else: return s[int(length/2)]
Programmers Lv.1 "제일 작은 수 제거하기" 흠... 그냥 구현문제이다. 지문을 잘 읽고 이를 그대로 코드로 옮기면 된다. 보통 "단,"이후에 나오는 문장들이 중요한 정보를 담고 있을 확률이 높으니 유의하면서 작성해보자. # 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다. # 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다. def solution(mylist): # 함수를 완성하세요 # mylist.sort() if mylist == [10]: return [-1] else: del mylist[mylist.index(min(mylist))] return mylist # 아래는 테스트로 출력해 보기 ..
Programmers Lv.1 "없는 숫자 더하기" 따로 알고리즘을 말할 필요도 없는 쉬운문제이다. 주어진 범위의 숫자 중 빠진 숫자를 필터링하고 이들의 합을 반환하면 된다. 필자는 comprehension을 이용하여 깔끔하게 구현하였다. def solution(numbers): return sum([elem for elem in range(0, 10) if elem not in numbers ])