java- IEEE 754 부동 소수점 방식
2023. 2. 2. 11:34
Java
자바에서 소수의 계산시에 값이 3.02 + 1.06 = 4.08 이렇게 정확하게 떨어지지 않고 3.0800003 이런식으로 나오는 경우가 있다. 이는 자바의 소수점 계산방식 때문이다. 각종 프로그래밍 언어에서는 소수를 표현할 때 IEEE 754 부동 소수점 방식으로 소수를 표현하게 되는데, java에서도 이 방식으로 소수를 계산한다. 🔎부동소수점(floating point) 방식 실수를 컴퓨터상에서 근사하여 표현할 때 소수점의 위치를 고정하지 않고 위치를 나타내는 수를 따로 적는 방식 유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현 컴퓨터에서는 고정 소수점 방식보다 넓은 범위의 수를 나타낼 수 있어 많이 이용되지만, 근삿값으로 표현되며, 비교적 연산 속도가 느리다. 고정소수점과는 ..
자료구조- DFS와 BFS의 탐색과정 차이
2022. 10. 26. 01:11
Java
DFS와 BFS가 많이 헷갈려서 이해하기 가장 편했던 방식으로 정리해보려 한다. 정말정말 풀어서 썼기에 깔끔하게 핵심만 넣었다기 보단 DFS와 BFS를 처음 접하는 사람이 이것을 이해하는 과정을 상세하게 다 적었구나 생각하면 될 것 같다. DFS vs. BFS DFS는 깊이우선 탐색 BFS는 넓이 우선 탐색을 뜻한다. 깊이 우선 탐색은 말 그대로 정점에서 갈 수 있는 가장 먼(깊은) 점까지 들어가서 탐색하는 것이고, 넓이우선 탐색은 현재 정점에 연결된 가장 가까운 점들부터 탐색한다. 검색 속도는BFS가 빠르지만 DFS가 더 간단하다. 따라서 검색 대상 그래프가 크거나 경로의 특징을 저장해둬야 하는 문제는 DFS를, 검색 대상의 규모가 크지 않고 최단거리를 구해야 하는 문제는 BFS가 유리하다. 일상생활에..
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 = ..
Java - 람다와 메서드 참조
2022. 9. 18. 00:49
Java
주요내용✔ 람다식 메서드 참조 람다식 함수(메서드)를 간략한 식으로 표현하는 방법 JDK 1.8 함수형 프로그래밍에서 이 기법을 도입하였다. 람다식의 규칙 1. 메서드의 이름과 반환타입을 제거하고 "->"을 블록{}앞에 추가 int max(int a, int b){ return a>b ? a:b; } //람다식 변형 (int a,int b) -> return a>b ? a:b; 2. 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능(끝에 ; 안붙임) (int a,int b) -> return a>b ? a:b; //람다식 변환 (int a,int b) -> a>b ? a:b 3. 매개변수의 타입이 추론 가능하면 생략가능(대부분의 경우 생략가능) (int a,int b) -> a>b ? a:..