목록원소 (4)
코드 한 줄
* 본 문제와 풀이의 저작권은 매일프로그래밍에 있습니다. 정수로된 배열이 주어지면, 각 원소가 자기 자신을 제외한 나머지 원소들의 곱셈이 되게하라. 단, 나누기 사용 금지, 시간 복잡도 0(n) 예제 } Input : [1, 2, 3, 4, 5] Output : [120, 60, 40, 30, 24] 여기서 중요한 것은 나누기 사용이 안된다는 것과 O(n) 시간 복잡도여야 한다는 것이다. 여기 input 예제를 보면 Input a = [a[0], a[1], a[2], a[3], a[4]] output = [ a[1]*a[2]*a[3]*a[4], a[0]*a[2]*a[3]*a[4], a[0]*a[1]*a[3]*a[4], a[0]*a[1]*a[2]*a[4], a[0]*a[1]*a[2]*a[3] ] 그럼 여기..
* 본 문제와 풀이의 저작권은 매일프로그래밍에 있습니다. 간격(interval)으로 이루어진 배열이 주어지면, 겹치는 간격 원소들을 합친 새로운 배열을 만들어라. 간격은 시작과 끝으로 이루어져 있으며, 시작은 끝보다 작거나 같다. 예제 } Input : {{2, 4}, {1, 5}, {7, 9}} Output : {{1, 5}, {7, 9}} Input : {{3, 6}, {1, 3}, {2, 4}} Output : {{1, 6}} 문제의 어려운 점은 간격 원소들이 무작위로 순서가 돼있는 것이다. 주로 이런 경우엔 자료구조를 써서 무작위 원소들을 쉽게 정리하거나, 원소들을 정렬하면 된다. 이 문제에선 간격 원소들을 정렬해보겠다. 간격 원소가 {start, end}로 나누어 있다고 가정하고, start로 ..
* 본 문제와 풀이의 저작권은 매일프로그래밍에 있습니다. 정수 배열과 타겟값이 주어지면, 합이 타겟값이 되는 두 원소의 인덱스를 찾아라. 예제 } Input : [2, 5, 6, 1, 10], 타겟값 : 8 Output : [0, 2] // 배열[0] + 배열[2] = 8 이 문제는 해쉬맵을 사용하여 원소 값과 원소 인덱스를 저장하면 쉽게 풀 수 있다. 각 배열의 원소마다 (타겟 - 원소 값)이 해쉬맵에 있는지 확인하면 된다. int[] solution(int[] input, int target) { Map map = new HashMap(); for(int i=0; i
* 본 문제와 풀이의 저작권은 매일프로그래밍에 있습니다. 정수 배열(int array)가 주어지면 가장 큰 이어지는 원소들의 합을 구하시오. 단, 시간복잡도는 O(n). 예제} Input : [-1, 3, -1, 5] Output : 7 // 3 + (-1) + 5 Input : [-5, -3, -1] Output : -1 // -1 Input : [2, 4, -2, -3, 8] Output : 9 // 2 + 4 + (-2) + (-3) + 8 이 문제는 두 개의 정수 변수로 현재의 합(currentSum)과 전체의 제일 큰 합(maxSum)을 저장해야 합니다. 각 원소마다 (currentSum + 원소) 값을 원소 값이랑 비교하고, 더 큰 값이 currentSum이 됩니다. maxSum은 curren..