| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- 백트래킹
- StringBuilder
- 둘만의 암호 자바
- 캡슐화
- 리눅스
- 혼공얄코
- 둘만의 암호
- spring security
- 자바의 정석
- 자바의정석
- 티스토리챌린지
- spring security 설정
- 쿠키
- 프로그래머스 둘만의 암호
- 입출력
- java
- 멀티태스킹
- SQL Mapper
- CPU
- hackerrank
- 다형성
- 오버라이딩
- 오블완
- localtime
- 프로그래머스
- 멀티프로세싱
- LocalDate
- over()
- StringBuffer
- 오버로딩
- Today
- Total
목록Java (32)
쉽게 쉽게
▤ 목차1. 소수 구하기1. 방법1 (N까지 나누기)N 보다 작은 자연수들로 나눈 후 소수인지 아닌지 판별하는 알고리즘이다. 시간복잡도: O(N²)public boolean isPrime(int n) { if (n 2. 방법2 (N의 제곱근보다 작은 수까지 나누기)첫 번째 방법에서 좀 더 발전된 방법으로 소수를 구할 때 N의 제곱근(√) 까지만 나눈다.소수인지 판별할 자연수의 제곱근을 기준으로 그 숫자의 약수들의 곱셈은 대칭적으로 곱셈이 일어나기 때문에 제곱근까지만 판별하면 된다. 만약 n=36일 때1×36=362×18=363×12=364×9=366×6=36 (제곱근에서 대칭의 끝) 즉, 약수는 작은 수와 큰 수로 짝을 이루고 있으며, 그 짝 중 하나는 항상 √n보다 작거나 같고, 다른 하나는 ..
▤ 목차1. 최대공약수 구하기최대공약수란 0이 아닌 두 개 이상의 정수의 공통되는 약수 중에서 가장 큰 수이다.여기서 유클리드 호제법을 이용하여 간편하게 최대공약수를 구할 수 있다.유클리드 호제법의 핵심은 큰 수를 작은 수로 나누어 떨어지게 한 뒤, 수를 반복적으로 수행하여 나머지 0이 될 때까지 작동하는 방법을 의미한다. 이때 작은 수가 최대공약수다. (주의할 점은 큰 수를 작은 수로 나눠야 한다는 것)예를 들어 1071과 1029의 최대공약수를 구하면,1071은 1029로 나누어 떨어지지 않기 때문에, 1071을 1029로 나눈 나머지를 구한다. ≫ 421029는 42로 나누어 떨어지지 않기 때문에, 1029를 42로 나눈 나머지를 구한다. ≫ 2142는 21로 나누어 떨어진다. 따라서, 최대공약수는..
▤ 목차1. 약수의 개수 구하기1. 방법1int N = 12345; // 숫자int cnt = 0; // 약수의 개수 for(int i=1; i이 방법은 number가 커질수록 비효율적이다. 2. 방법2 (효율적인 방법)int N = 12345; //숫자int cnt = 0; //약수의 개수for (int i = 1; i*i N의 약수 중 하나가 m이라고 했을 때, 다른 약수는 number/m이 되므로 하나의 약수를 알면 다른 하나를 알수있다.for문을 √N까지 구하면 약수 절반의 개수를 구할 수 있다는 걸 알 수 있다.즉 1~√N까지 수 중 N의 약수를 구해 × 2를 해주면 되고, 약수가 √N인 경우에 제곱근이므로 1개로 카운트해주면 된다. 3. 방법3 (제일 효율적인 방법) int N =..
1. File클래스란java.io 패키지에서 제공하는 File 클래스는 입출력에 필요한 파일 및 디렉터리에 관한 정보를 다를 수 있다. File 클래스는 파일과 디렉터리의 접근 권한, 생성된 시간, 마지막 수정 일자, 크기, 경로 새로운 파일과 디렉터리 생성 및 삭제, 이름 변경 등의 조작 메드를 가지고 있다.2. File 생성자 File(String path)주어진 문자열 경로를 갖는 File객체 생성ex) File dir = new File( "C:\\testDir\\test.txt" );File(String dir, String name)dir와 name문자열을 연결한 문자열로 경로를 생성하여 File객체를 생성첫번째 매개변수에 디렉터리 경로를 넣고, 그 하위 파일명을 지정하여 생성ex) File ..
1. 이슈 페이징을 구현하는 과정에서 Map에 있는 값을 int로 가져와서 사용해야 하는 일이 있었다. 그러나 int로 강제 형변환해서 사용하면 될 거라 단순하게 생각했지만 오류가 발생했다. int current_page = (Integer)map.get("current_page"); -- java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 발생 이를 올바르게 해결하려고 했다. 2. Map에 있는 값 형변환하기 첫번째로 Stiring -> int로 전환하여 사용하려 했다. int current_page = Integer.parseInt((String)map.get("current_page")); -- java..
이 글은 '자바의 정석'의 내용을 기반으로 공부한 내용을 덧붙인 글입니다. 1. 입출력(I/O)이란? I/O는 Input과 Output의 약자로 입력과 출력을 의미한다. 즉 컴퓨터 내부 또는 외부의 장치와 프로그램 간의 데이터를 주고받는 것을 말한다. 입출력의 예를 들면 키보드로 데이터를 입력받거나, System.out.println()을 이용해서 출력하는 것이 있다. 데이터를 주고 받으려면 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이것을 스트림(stream)이라 한다.(데이터를 다뤘던 스트림과 이름만 같음) 입출력에서 스트림은 데이터를 운반하는 데 사용되는 연결통로다. 입력과 출력을 수행하려면 *입력 스트림과 출력스트림이 필요하다. 입력 스트림 : 대상으로부터 자료를 읽어들이는 스..
이 글은 '자바의 정석'의 내용을 기반으로 공부한 내용을 덧붙인 글입니다. 1. 스트림이란? 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았다. 1. 스트림을 사용하는 이유 스트림을 사용하는 이유는 배열이나 컬렉션뿐만 아니라 파일에 저장된 데이터도 모두 같은 방식으로 다룰 수 있기 때문이다. 데이터를 다룰 때, 컬렉션이나 배열에 담고 for문과 Iterator를 이용했지만, 이러한 방식은 코드가 길고 재사용성이 떨어진다는 단점이 있다. 또한 데이터 소스마다 다른 방식으로 다뤄야 한다는 점도 있다. Collection이나 Iterator와 같은 인터페이스를 이용해서 표준화시키긴 했지만 각 컬렉션마다 같은 동작을 위해 다른 메서드를 사용하는 경우가 있다. 예를 들어..
이 글은 '자바의 정석'의 내용을 기반으로 공부한 내용을 덧붙인 글입니다. 1. 람다식이란? 메서드를 하나의 '식'으로 표현한 것 람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있게 해준다. 함수를 람다식으로 표현하면 메서드의 이름이 필요 없기 때문에, 람다식은 *익명 함수(Anonymous Function)의 한 종류라고 볼 수 있다. ★ 람다식 사용배경 람다를 지원하기 전의 자바는 완전한 *명령형 프로그래밍이었다. 명령형 프로그래밍 : 클래스에서 메서드를 정의하고, 필요할 때 그 메서드를 호출하는 명령하여 동작한다. 명령형 프로그래밍을 기반으로 개발했던 개발자들은 개발하는 소프트웨어의 크기가 커짐에 따라, 복잡하게 엉켜있는 스파게티 코드를 유지보수하는 것이 매우 힘들다는 것을 깨닫게 되었다. ..
이 글은 '자바의 정석'의 내용을 기반으로 공부한 내용을 덧붙인 글입니다. 1. 쓰레드란 쓰레드를 설명하기 이전에 먼저 프로세스를 알아야 한다. 프로세스란 실행 중인 프로그램을 의미한다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다. 이런 프로세스는 프로그램을 수행하는 데 필요한 데이터, 메모리 등의 자원 그리고 쓰레드로 구성되어 있다. OS에서 실행 중인 하나의 애플리케이션 즉 ctrl + alt + del창 작업 관리자에서 프로세스 탭에 올라와 있는 어플리케이션 하나를 하나의 프로세스라고 부른다. ex) Chrome 만약 우리가 크롬창을 더블클릭 누른다면(실행) 운영체제로부터 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는 것이 프로세스이다. 크롬을 2..
이 글은 '자바의 정석'의 내용을 기반으로 공부한 내용을 덧붙인 글입니다. 1. 지네릭스란? 다양한 타입의 객체들을 다루는 메서드나 켈렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 지네릭스의 용어 위와 같이 클래스를 만들 때 클래스 명 옆에 지네릭스를 붙이고 선언하면 이것을 지네릭 클래스라 한다. 그리고 이때 지네릭스에 들어가는 자리의 변수를 타입변수, 타입 매개변수라 한다. 그리고 타입변수로서 들어간 문자는 타입 문자라 한다. 는 타입 변수로 이 클래스로 객체를 생성할 때 해당 객체에 어느 자료형이든 저장 가능하단 뜻이다. (T가 아니더라도 상관없다. String이든 Integer든 뭐든 가능하다는 의미) 는 객체를 생성하고 이용할 때 어떤 타입인지 결정된다. 마지막으로 원시타입은 일반 클래스..
