CodeSignal 8번 matrixElementsSum문제풀이
·
알고리즘/CodeSignal
처음으로 만났던 어려운 문제인 7번이 지나가고 한동안은 쉬운 문제만 나옵니다. 이 문제는 2차원 배열 형태의 입력이 주어지고, 유령의 영향을 받지않은 방의 수만 더하는 문제입니다. 입력 행렬에서 0인방은 유령방이고, 그 아래 방들은 모두 숫자를 더하지 않습니다. 이 문제는 다음과 같이 풀었습니다. def matrixElementsSum(matrix): ghostLine=[] sum=0 for floor in matrix: for line in range(len(matrix[0])): if line in ghostLine: continue if floor[line]==0: ghostLine.append(line) sum+=floor[line] return sum 유령방이 있는 열들을 ghostLine에 저..
CodeSignal 7번 almostIncreasingSequence 문제풀이
·
알고리즘/CodeSignal
입력받은 수열에서 하나 이하의 요소만을 제거해 숫자가 연속적으로 1 이상씩 증가되게 만들수있는지 반환하는 문제입니다. 7번은 제가 굉장히 고전하면서 풀었고, 마지막으로 푼 이후로 코드 리팩토링을 아직 하지 않았기 때문에 추후 글 수정하겠습니다.
CodeSignal 6번 makeArrayConsecutive2 문제풀이
·
알고리즘/CodeSignal
몇개의 숫자를 입력 수열에 더해지면 연속적인 수열이 만들어질수있는지 반환하는 문제입니다. 이 문제는 간단한 계산식으로 풀립니다. def makeArrayConsecutive2(statues): return max(statues) - min(statues) - len(statues) + 1 입력수열의 최대값-최소값+1을 하면 총 몇개의 수로 연속적인 수열이 만들어지는지 알수있습니다. 예를들어, 입력수열이 [0,2]일때 수열의 최대값2 - 최소값0 + 1 을 함으로써 최종 수열(0,1,2)이 총 숫자 3개로 이뤄진단걸 알수있어요. 여기서 이미 있는 수들인 입력수열의 길이(2)를 빼줌으로써 몇개의 수를 추가해서 최종수열을 만들수 있을지를 알수있는것입니다.
CodeSignal 4번 adjacentElementsProduct 문제풀이
·
알고리즘/CodeSignal
이 문제는 리스트를 입력받은뒤 리스트에있는 인접한 요소들의 곱중에 최대값을 반환하는 문제입니다. 아래는 제가 푼 코드입니다. def adjacentElementsProduct(inputArray): sumlist=[(inputArray[i]*inputArray[i+1]) for i in range(len(inputArray)-1) ] return max(sumlist) 리스트 컴프리헨션을 이용해 인접한 요소들의 곱셈을 모아둔 sumlist를 만들고, max함수를 이용해 이들중 최대값을 출력하는 코드입니다. 전 가독성 때문에 나눠썼지만 가독성보다 코드 길이가 중요하다면 sumlist를 만드는것을 max함수와 분리하지 않고, return max([(inputArray[i]*inputArray[i+1]) fo..