일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬
- 위상정렬
- disjoint set
- equals
- 스프링
- 포트앤어댑터 아키텍처
- springboot
- 다익스트라
- 알고리즘
- docker
- 이펙티브 자바
- 세그먼트 트리
- pandas
- 자바
- 데이터 flow
- dfs
- BFS
- 문자열
- UML
- java
- JPA
- dataframe
- Redis
- 헥사고날 아키텍처
- 백준
- ddd
- DP
- series
- spring security
- 비트마스크
- Today
- Total
목록java (7)
코딩못하는사람
Enum(열거형) 이란? 서로 연관이 있는 상수들을 묶어 놓은 집합이다. 우리가 자바에서 상수를 정의할 때 final static 을 이용해서 정의하던 문제점들을 보완할 수 있다. Enum의 장점 코드가 단순해지고 가독성이 좋아 구현 의도를 파악하기 쉽다. 인스턴스 생성,상속을 방지하여 상수의 타입안정성이 보장된다. 허용 가능한 값들을 제한할 수 있다. IDE의 적극적인 지원을 받을 수 있다.(자동완성,오타검증,텍스트 리펙토링 등등) 리펙토링시 변경 범위가 최소화된다.(Enum 코드만 고치면 됨) Enum을 사용함으로써 얻는 장점 gender1 = EnumExample.MALE; gender1 = EnumExample.FEMALE; 를 선언한 부분까지는 문제가 없어보이나 gender1='boy' 라는 값..
www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 1.접근 각 알파벳에 자리수를 곱해서 가장 큰 값부터 9를 할당해서 문제를 푸는 그리디 문제이다 2.풀이 알파벳을 한줄 씩 입력받을 때 마다 자릿 수를 곱해서 Map에 저장한다. 예를들면 ABC는 A에 100, B에 10, C에 1을 더하는 것이다. 이렇게 map을 만들고 value값이 가장 큰 순으로 정렬해서 9부터 1씩 줄여가며 곱해서 답을 출력한다. 3.코드 4.배운점 (1)Map에서 value값에 ..
HashSet,HashMap,Hashtable 자료구조를 이해하려면 hashCode를 이해하고 있어야 해서 정리했다. 객체를 비교할 때 동일성 비교 == 연산자: ==연산자는 두 객체의 주소가 같은지를 비교해서 같으면 true 다르다면 false를 반환한다(primitive타입은 값을 통해서 비교한다). 동등성 비교 equals() 메서드: equals는 Object의 기본 메서드로 객체 내부의 값을 비교해준다. 우리가 자주 사용하는 클래스들은 equals를 따로 override해서 동등성 비교를 각 데이터들에 맞게 설정해주었다. 예를 들어 String은 리터럴 방식으로 선언하나 new String 객체로 생성하나 문자열 값만 같으면 equals를 true로 반환하게 만들어 주었고, Integer은 in..
mutable한 객체들을 deepcopy하지 않고 사용하다가 코드를 짤 때 실수한 경험이 많다. 그래서 이번에 확실히 정리했다. DeepCopy (깊은 복사) 일반적인 객체 deepcopy Object클래스의 clone()메서드를 사용하면 객체를 deepcopy해줄 수 있다. 따라서 객체들이 Object 클래스의 clone()메서드를 가지고 있다면 쉽게 깊은 복사를 할 수 있다. 예를들어 Array의 API를 보자. public final class Array extends Object 라고 되어 있다. 따라서 clone을 사용하면 쉽게 deepcopy를 할 수 있다.(primitive 타입 배열일때) 내가 만든 클래스 인스턴스의 deepcopy 내가 만든 class의 deepcopy를 하려면 Clone..
Java Virtual Machine(JVM)이란? java와 운영체제(OS) 사이에서 중계자 역할을 해준다. 자바가 운영체제 종류,플랫폼에 관계없이 독립적으로 실행 가능하도록 해준다. 메모리 관리를 GC를 통해서 자동으로 해준다. 왜 JVM 메모리 구조를 알아야 할까? 메모리 설계가 잘되어 있는 프로그램에 비해 메모리 고려가 되지 않은 프로그램은 속도 저하 현상이나 튕김 등의 현상이 일어날 확률이 크다. 결과적으로, 같은 기능의 프로그램이라 하여도 메모리의 관리에 따라 성능이 차이가 나게 된다. 따라서 메모리 구조를 파악하고 한정된 메모리를 효율적으로 사용해야 한다. 자바 실행 과정 -Java Compiler: Java source(.java)파일을 바이트 코드로 바꿔 .class파일로 만들어 준다. ..
StringBuilder란. API를 살펴보면 첫줄에 A mutable sequence of characters 라고 써있다. String은 immutable 한 객체로 값을 수정하면 새로운 객체를 만들어 내서 메모리를 잡아먹고 시간도 잡아먹게된다. 하지만 StringBuilder를 사용하게 되면 mutable한 sequence를 수정하는 것이므로 같은 주소에 값만 수정되는 개념이 되게되서 훨씬 빠르게 작동하게 되는 것이다. (메모장에 써 넣어 놓는다고 생각이 든다) 예를 들어 for문 10000번을 돌면서 10000줄의 문자열을 출력해야한다고 하면 System.out.println("정답")은 만번의 String을 선언하고 메모리를 잡아먹게 되지만 매번 StringBuilder에 sb.append("정..
자바의 String 객체와 String 리터럴 자바에서 String은 객체로 선언할 수도 있고 리터럴로도 선언할 수 있다. String temp=new String("abcde"); 은 new 연산자를 활용한 객체 생성 방식 String temp1="abcde"; 은 문자열 리터럴 방식으로 선언한 방식이다. 객체를 생성하는 방식은 Heap영역에, 리터럴은 Heap영역 속 String constant pool에 저장된다. 예시 그림을 보고 이해하자. String str1 = "madplay"; String str2 = "madplay"; String str3 = new String("madplay"); String str4 = new String("madplay"); 문자열 비교 equals메소드: Str..