목록분류 전체보기 (240)
요르딩딩
이번문제는 dfs/bfs로 풀 수 있는 문제입니다. 처음에는 이차원 배열을 활용한 dfs로 구현하였으나, 단방향/양방향에 이슈로 인해 정답이 제대로 나오지 않았습니다. 처음에 구현한 방식은 이차원 배열의 값들을 하나씩 체크하여, 지나갈 수 있고 방문가능한 갯수를 세었습니다. [1, 0, 0, 1] [0, 1, 1, 0] [0, 1, 1, 0] [1, 1, 0, 1]] 이렇게 하다보니 위와 같은 케이스에서 단방향/양방향 이슈에 직면하였습니다. (2->4 = 0) 물론 이것을 양방향으로 만들어도 원하는 결과를 도출해 낼 수 없었습니다. 그 이유는 원하는 정답을 도출해 내는 방식이 틀렸기 때문이라고 생각합니다. 그리하여, 리스트를 활용한 dfs를 활용했습니다. 네트워크와 같이 하나의 흐름을 쭉 확인해야하는 문..
이번 문제에 문제 푸는 방식을 생각해내는 것에서는 어렵지 않았습니다. 문제를 푸는 방식은 배열에서 가장 큰 수를 매번 고르고, 거기서 1을 빼는 식으로 n이 0이 될때까지 진행하는 방식입니다. 다만, 처음 풀때는 배열을 이용하여 내림차순으로 정렬 후, 가장 큰수에서 1을 빼고, 다시 배열을 재정렬 해주는 방식으로 구현했습니다. 이렇게 하니 결과는 맞으나, 실행시간 테스트에서 실패가 발생했습니다. 딱봐도 매번 재정렬하는 부분이 문제라 생각되어, 우선순위 큐를 이용하여 정렬이 되게끔 하면, 더 빠르 실행속도를 낼 수 있다 판단하였고, 그리하여 구현을 통해 테스트를 모두 통과할 수 있었습니다. 우선순위 관련된 문제가 나올때는 우선순위 큐나, treemap을 이용하면, 정렬에 있어서 더 좋은 효과가 난다고 생각..
이번시간에는 spring에서 branch를 추가해 배포하는 과정을 알아보도록 하겠습니다. 저는 Eclipse, Sourcetree/Git(형상관리), Jenkins(배포)를 활용하였다는 점을 참고해 주세요. [구조] Eclipse(source) -> (SourceTree -> Git) -> Jenkins -> Server [순서] branch 생성 eclipse내에서 branch를 생성할 수도 있지만, sourcetree를 활용하여 branch를 생성하였습니다. 방법 : 상단 > "브랜치" 클릭 > (새 브런치)명 입렵 > "브런치 생성" 클릭 브랜치가 생성되었고, 변경값을 입력 후 푸시하게되면, 원격 레파지토리에 브랜치가 생성되는것을 알 수 있다. Jenkis Job 생성 새로운 brach 전용 job..
이번문제는 우선순위 큐로 풀었어야 했을거 같은데, 시간관계상 리스트를 매번 정렬하는 방식으로 풀어보았다. 리스트를 매번 정렬하는게 비효율 적이라 생각되어, 나중에 우선 순위 큐로 다시 한번 풀어봐야겠다. import java.util.*; class Solution { public int[] solution(String[] operations) { int[] answer = new int[2]; ArrayList list = new ArrayList(); for (String a : operations) { String[] tmp = a.split(" "); String cmd = tmp[0]; int value = Integer.parseInt(String.valueOf(tmp[1])); if (cmd..
이번문제는 기본적인 흐름대로 구현하여도 무난하게 풀 수 있는문제이다. 다만, 2차원 배열의 내부가 길이가 다 다르다는 점만 주의하면된다. import java.util.*; class Solution { public int solution(int[][] triangle) { int answer = 0; int n = triangle.length; List arr = new ArrayList(); // 루트노드부터 계산한 합만 들어가 리스트 for(int i=0; i < n; i++) { // 초기화 arr.add(new int[i+1]); } int[]a = arr.get(0); // 최초갑 세팅 a[0] = triangle[0][0]; for (int i = 1; i < triangle.length; ..
이번시간에는 spring에서 Junit을 활용하여 테스트하는 방법에 대해 알아보자. - 파일 위치 : src/test/java/testcase/TestCode.java [소스] package testcase; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.t..
해당 값을 갯수로 나눈 후 뒤에서 부터 하나씩 +1을 헤준다. import java.util.*; class Solution { public int[] solution(int n, int s) { int[] answer = new int[n]; int value = s/n; // 몫 int mod = s%n; // 나머지 구하기 if (value == 0) { // 없는경우 answer = new int[1]; answer[0] = -1; return answer; } for(int i=0; i < n; i ++) { answer[i] = value; } int index = n-1; for(int i=0; i
[인덱스] 인덱스 특징 인덱스는 where절에서 효과가 있다. 인덱스가 걸려있는 컬럼을 where에 조건으로 넣을 경우에 효과를 볼 수 있다. 인덱스 설정 기준 카디널리티가 높을수록 좋다 : 고유한 값 위주로 (중복이 적을 수록) 선택도가 낮으면 좋다 : 하나의 값으로 적은 row가 조회된다. (일반적으로 5~10%가 적당) 조회 활용도가 높을 수록 좋다 : 조회에 자주 사용되는 컬럼 수정빈도가 낮을수록 좋다 : 인덱스 테이블도 갱신되기 때문에 낮을수록 좋다. (인덱스도 DB 메모리를 사용하여 테이블 형태로 저장되므로 개수와 공간은 비례합니다.) DML에 미치는 영향도 update, delete는 where절에 인덱스로 조건을 붙여주면, 크게 성능저하가 일어나지 않다, 조회시 빠른것이지 update, d..