2023-02-27 1. 방법 첫 번째 방법은 순차탐색하는 방법으로 O(n)의 복잡도를 가지게 된다. 주어진 n의 정수만큼 복잡도가 증가하기 때문에 비효율적이다. 반면에 sum2와 같은 방식은 n 값의 증가와는 상관없이 항상 O(1)의 복잡도를 가지게 되면 굉장히 효율적이기 때문에 1부터 시작하는 n의 정수의 합을 구하는 경우 sum2와 같은 방법을 구하는 것 이 좋다. @Test public void test11(){ int n = 100; int sum1 = 0; for(int i = 0; i
2023-02-26 1. 방법 아래와 같이 O(n)의 복잡도로 정수형 배열의 부분 최대합을 구할 수 있다. 음수가 나올 경우 현재의 합은 0으로 초기화되며, 매 순차마다 최댓값을 비교하여 설정해 주면 된다. public class Max { public static int sequence(int[] arr) { int nowSum = 0; int maxSum = 0; for(int i = 0; i < arr.length; i++){ nowSum = Math.max(nowSum + arr[i], 0); maxSum = Math.max(maxSum, nowSum); } return maxSum; } } 메인 이미지 출처 : 사진: Unsplash의BoliviaInteligente
2023-02-16 1. 문제설명 일반적으로 투 포인터 알고리즘은 1차원 수열에서 목표값을 찾을 때 사용한다. 대표적인 예로 구현을 해보자. 아래의 백준문제를 참고해서 구현했다. https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 구현은 아래와 같이 구현했다. 매 분기마다 총합을 비교하며 총합이 타깃보다 클 경우 현재 시작포인터의 배열값을 차감하고 시작포인터를 증가시키고 총합이 타깃보다 작거나 같을 경우 마..
2023-02-08 1. 방법 방법은 간단하다. soap:Envelope 형태를 가지는 String 객체를 바이트로 변경 > inputStream 담고 이후 MessageFactory를 통해 SOAPMessage를 만들면 된다. import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPMessage; import java.io.ByteArrayInputStream; import java.io.InputStream; @Test public void requst_responseTest() throws Exception { String requestResponse = "" + " " + ... ... ... " " + ""; InputStream is ..
2023-02-04 1. 방법 Arrays.sort 내부 메소드 compare를 확용하면, 숫자형 문자열 배열을 앞자리 기준으로 정렬할 수 있다. import java.util.Arrays; import java.util.Comparator; public class Test_01 { @Test public void test(){ String[] arr = {"1","1","1","1","1","3","0","5","5","1231","432423","931"}; orderAsc(arr); for (String str: arr ) { System.out.print(str + " / "); } System.out.println(); orderDesc(arr); for (String str: arr ) { S..
2023-01-30 1. 방법 아래의 방법은 기존 set에서 비교하고자 하는 set을 빼는 방법이다. 코드는 간단하지만 원본객체가 보존이 되지 않는 문제점이 있다. @Test public void SetTest1(){ Set allNameSet =new HashSet(); allNameSet.add("a"); allNameSet.add("b"); allNameSet.add("c"); allNameSet.add("d"); allNameSet.add("e"); Set NameSet =new HashSet(); NameSet.add("a"); NameSet.add("b"); NameSet.add("c"); allNameSet.removeAll(NameSet); for(String name : allNameSe..