Spring - NoSuchBeanDefinitionException오류
2022. 10. 26. 01:12
Error
김영한님의 스프링 강의를 들으며 컴포넌트 스캔을 사용하는 테스트를 돌리던 중 다음과 같은 오류가 발생하였다. NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 대충 해석해보면 MemberRepository타입 중 autowire 가능한 bean이 한개도 없다는 것이었다. 혹시 해서 코드를 확인해보니 모두 맞게 작성하였음에도 오류가 발생하였다. 원인은 패키지 위치에 있었다. @ComponentScan은 해당 ..
자료구조- DFS와 BFS의 탐색과정 차이
2022. 10. 26. 01:11
Java
DFS와 BFS가 많이 헷갈려서 이해하기 가장 편했던 방식으로 정리해보려 한다. 정말정말 풀어서 썼기에 깔끔하게 핵심만 넣었다기 보단 DFS와 BFS를 처음 접하는 사람이 이것을 이해하는 과정을 상세하게 다 적었구나 생각하면 될 것 같다. DFS vs. BFS DFS는 깊이우선 탐색 BFS는 넓이 우선 탐색을 뜻한다. 깊이 우선 탐색은 말 그대로 정점에서 갈 수 있는 가장 먼(깊은) 점까지 들어가서 탐색하는 것이고, 넓이우선 탐색은 현재 정점에 연결된 가장 가까운 점들부터 탐색한다. 검색 속도는BFS가 빠르지만 DFS가 더 간단하다. 따라서 검색 대상 그래프가 크거나 경로의 특징을 저장해둬야 하는 문제는 DFS를, 검색 대상의 규모가 크지 않고 최단거리를 구해야 하는 문제는 BFS가 유리하다. 일상생활에..
Java- StringTokenizer()사용 중 ArrayIndexOutOfBoundsException 오류
2022. 10. 15. 13:38
Error
처음 백준 문제를 풀때 가장 많이 헷갈리는 부분이 입출력을 어떻게 받는가이다. 아직 StringTokenizer의 사용법이 헷갈려서 오류가 뜰 때가 많다. 처음에 가장 많이 떳던 오류는 NoSuchElementException였다. 아직 정확한 원인은 모르지만 nextToken으로 받은 후 값을 사용하지 않고 바로 nextToken을 사용하여 다른 값을 받으려고 하면 뜬다. 또 StringTokenizer는 무조건 '공백'으로만 입력받는다! 줄 단위로 입력받고 싶으면 그냥 readLine()을 바로 쓰면 된다. 추후에 다른 오류들을 만나며 더 알아봐야겠다. 이번에는 백준 2675번 문제를 풀던 중 다음과 같이 ArrayIndexOutOfBoundsException이 발생하였고 해석해보면 인덱스 1은 배열..
Java - Scanner vs. BufferedReader
2022. 10. 3. 18:12
Java
java에서 입력을 받는 방법에는 대표적으로 두가지가 있다. Scanner 객체를 생성 Scanner in = new Scanner(System.in); //scanner 객체 생성 byte a = in.nextByte(); // byte 형 입력 및 리턴 short b = in.nextShort(); // short 형 입력 및 리턴 int c = in.nextInt(); // int 형 입력 및 리턴 long d = in.nextLong(); // long 형 입력 및 리턴 float e = in.nextFloat(); // float 형 입력 및 리턴 double f = in.nextDouble(); // double 형 입력 및 리턴 boolean g = in.nextBoolean(); // bo..
Java- StringBuilder의 메소드
2022. 9. 26. 08:18
Java
연속적인 String의 덧셈에 사용 String끼리 더해줄 때 덧셈 연산이 많아진다면 메모리 할당과 해제를 발생시킴 Why? String 객체는 한 번 생성되면 내용을 바꿀 수 없으므로 하나의 문자열을 다른 문자열과 연결하면 새 문자열이 생성되고, 이전 문자열은 가비지 컬렉터로 들어간다. 이때 문자열의 갯수가 많아질수록 내부적으로 많은 작업이 발생하여 메모리를 많이 차지함. StringBuilder는 String과 다르게 변경 가능한 문자열을 만들어줌 생성자를 통해 생성 append()를 통해 String 추가 가능 StringBuilder result = new StringBuilder(); //생성 result.append("I'm ").append("so hungry"); //String에 Stri..
Java - split()/join() 배열<->문자열 변환
2022. 9. 23. 10:11
Java
split(String regex) 구분자를 기준으로 배열 형식으로 문자열을 잘라서 리턴 //공백을 기준으로 문자열을 분리 String str = "a b c d e" String[] ArraysStr = str.split(" "); //여러개의 구분자를 두어 분리 String str = "a,b c-d#e" String[] ArraysStr = str.split(",=#"); //split 이후에 [index]를 사용하면 해당하는 순서의 값만 가져올 수 있음 String str = "a b c d e" String[] ArraysStr = str.split(" ")[1]; //b split(String regex,int limit) 구분자를 기준으로 배열 형식으로 문자열을 limit수만큼 자름 Stri..
Java - 많이 쓰는 메소드 정리1 (배열 복사)
2022. 9. 23. 09:58
Java
System.arraycopy() 배열 복붙 메서드 붙여넣을 함수에 바로 넣을 수 있음 System.arraycopy(arr,0,result,0,arr.length) //->arr의 0번 인덱스부터 arr.length개 만큼의 요소를 result의 0번 인덱스부터 붙여넣어라 Array.copyOfRange(arr,from,to) 붙여넣을 함수 따로 정해주지 않음 Result = Arrays.copyOfRange(arr,4,8) //-> arr배열의 4번 인덱스부터 8번 인덱스 전의 요소까지 복사되어 Result에 붙여넣음
Java - 배열 - > ArrayList변환하기
2022. 9. 23. 01:16
Java
Arrays.asList() 일반 배열을 ArrayList 구조로 바꾸는 메소드 List list = Arrays.asList(arr); 이 방식을 사용하면 원본 배열의 주솟값을 가져옴 따라서 수정하면 원본의 데이터도 바뀌게 된다. List자료구조는 set(),get(),contains()메소드를 가지고 있기에 이 메서드들은 사용 가능하지만 원소를 추가,삭제하는 메서드는 가지고 있지 않다. 따라서 새로운 원소를 추가하거나 삭제할 수 없다.(배열의 길이를 바꿀 수 없다.) list.add("hi") //불가능 List.set(1,"hi") //가능. 2번째 인덱스 원소를 "hi" 로 수정 Array.asList()는 배열의 내용을 수정할 때 List로 바꿔 편리하게 사용하기 위함 new ArrayList(..
Java - 컬렉션 프레임워크
2022. 9. 19. 23:10
Java
주요내용 List인터페이스 Iterator Set인터페이스 Map인터페이스 hashing 컬렉션 문제풀이 컬렉션 여러 객체(데이터)를 모아놓은 것을 의미 컬렉션 프레임워크 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식 다양한 클래스 제공 컬렉션 프레임워크의 핵심 인터페이스 인터페이스 특징 List 순서가 있는 데이터의 중복 혀용 Set 순서x,중복 허용x Map 키와 값의 쌍으로 이루어진 데이터의 집합 순서x,중복(키x,값o) List인터페이스 Arraylist 저장공간으로 배열을 사용 생성하기 위해서는 저장할 객체 타입을 매개변수, 즉 제네릭으로 표기하고 기본 생성자를 호출 ArrayList 객체명 = new ArrayList(초기 저장 용량); ArrayList container1 = ..