
배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. Arrays.sort() 이용한 방법 //1. 내 풀이 public int[] solution_5_1(int[] array, int[][] commands){ int[] answer = new int[commands.length]; for(int i=0; i < commands.length; i++){ int start = commands[i][0]-1; int end = commands[i][1]-1; int point = commands[i][2]-1..
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 내 풀이 //1. 내 풀이, 정확성 69.5, 효율성 30.5 public boolean solution_4_1(String s){ Stack stack = new Stack(); for(int i=0; i < s.length(); i++){ if(stack.isEmpty() || s.charAt(i) == '('){ stack.push(s.charAt(i)); } else if(s.charAt(i) == ')' && stack.peek() == '('){ stack.pop(); } } if(s..
내 풀이 public int[] solution_3_1(int [] arr){ int[] answer = {}; Stack stack = new Stack(); for(int a : arr){ if(stack.isEmpty() || stack.peek() != a){ stack.push(a); } } answer = new int[stack.size()]; for(int i=stack.size()-1; i >= 0; i--){ answer[i] = stack.peek(); stack.pop(); } return answer; } 1. 스택을 만든다. 2. 비어있거나, 스택 맨 위 값과 현재 값이 같지 않으면 스택에 현재 값 넣는다.(같으면 안 넣을 것) 3. 거꾸로 뽑아 answer에 넣어주면 끝 Arr..
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 해시맵을 이용한 풀이 1 //1. 다른 사람의 풀이 public String solution_2_1(String[] participant, String[] completion){ String answer = ""; HashMap hm = new HashMap(); for(String player : participant){ hm.put(player, hm.getOrDefau..
N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return 하도록 solution 함수를 완성해주세요. 처음에 그냥 풀었을 때 public int solution_1_1(int[] nums){ int answer = 0; int half = (int)nums.length/2; Arrays.sort(nums); int type = 0; int prenum = 0; for(int i=0; i < nums.length; i++){ if(prenum != nums[i]){ type++; } prenum = nums[i]; } if(half < type) { answer = half; }else{ answer = type; } retu..
대학교 때는 왜 그랬는지 모르겠지만, 코딩테스트를 보면 1번 2번 문제는 쉽게 풀었었다. 근데 회사를 1년 정도 다니면서 코테 공부를 안하기도 하고,,내 뇌가 퇴화됐는지 요즘은 첫 문제도 어렵다! 뭐든지 선택과 집중이기 때문에 취준 또한 선택과 집중으로 코딩테스트보다는 면접에 중점을 두고 열심히 공부를 했는데, 솔직히 코딩 테스트를 놓아버리면 안되겠다는 생각을 오늘 했다. 어렵고 좀 걸려도 언젠가 빛을 볼 것이다라는 생각으로 해야겠다.(물론 나 ㄹㅇ 못하지만!!) 막상 알고리즘, 코딩테스트 공부를 하려니 어떻게 해야 하는지 모르겠어서 블로그의 글과 친구의 조언을 참고했다. 입문자용 강의 보기 동빈나 님의 실전 알고리즘 강좌 실전 알고리즘 강좌 (Algorithm Programming Tutorial) w..

이전까지는 GET을 통해 모든 투두 데이터를 가져오는 것까지 해봤다. 이제 추가하는 기능을 구현해보겠다. Spring Boot(Backend) 백엔드 개발 방법에는 Test-Driven Development라고 요즘 많이 쓰는 TDD 방식이 있다. TDD란 클래스와 메소드의 껍데기를 정의하고, Unit Tests를 작성해 테스트를 먼저 하고 그에 따라 클래스와 메소드 내부를 구현하는 방식이다. 나는 아직 이 방식에 익숙치 않아서 다음번에 기회가 된다면 해보겠다. ToDoItemService public ToDoItem update(final ToDoItem toDoItem){ if(toDoItem == null){ throw new NullPointerException("To Do Item can not..
IoC를 이론적으로는 알지만, 자꾸 실무에서 왜 쓰는지 헷갈려서 다시 한 번 정리해본다. IoC(Inversion of Control) 제어권이 역전되었다는 뜻이다. 예제를 통해 알아보겠다. @Service public class SampleService { private SampleRepository sampleRepository = new SampleRepository(); } SampleService 클래스는 SampleRepository에 의존한다. SampleService가 SampleRepository를 이렇게 직접 만들어서 사용하는 게 아니라 @Service public class SampleService { private SampleRepository sampleRepository; pub..
파티션 큰 테이블이나 인덱스를 파티션 단위로 분할하는 것 파티션 사용 이유 서비스의 크기가 커지고 데이터 규모가 커지면서 DBMS의 용량에 한계가 오고 그에 따라 성능이 저하되면서 테이블을 파티션이라는 단위로 나누어서 관리하는 파티셔닝 기법이 등장했다. => 소프트웨어적인 데이터베이스 분산 처리가 가능해졌다. 디비를 분할해 파티션 단위 백업, 추가 삭제, 변경이 가능하다. 풀 스캔에서 데이터 접근 범위를 감소시켜서 성능이 향상된다. 파티셔닝 하지 않고 하나의 큰 테이블로 사용하면 그만큼 인덱스도 커지고 물리적인 메모리 공간도 많이 필요해진다. 파티션 별로 독립적인 백업과 복구가 가능하다. 관리하기도 좀 더 효율적이다. 단점도 존재한다. 조인으로 인한 비용이 증가한다. 테이블과 인덱스를 별도로 파티셔닝하는..

bootstrap-vue bootstrap-vue는 Bootstrap을 Vue.js에서 사용할 수 있도록 만든 패키지이다. 나는 vue3를 쓰기 때문에 bootstrap-vue-3를 이용해보겠다. https://www.npmjs.com/package/bootstrap-vue-3 bootstrap-vue-3 패키지 설치 to-do-frontend 프로젝트 디렉토리로 들어가서 설치한다. npm i bootstrap-vue-3 bootstrap --save 뷰 프로젝트 재실행한다. 이제 main.js에 임포트해준다. main.js import { createApp } from 'vue' import App from './App.vue' import router from './router' import Boot..