본문 바로가기

728x90
반응형

분류 전체보기

(222)
모던자바인액션 12강 Date, Calendar 날짜와 시간 API ❓ 기존 자바에서 날짜 표현 자바 1.0에서는 java.util.Date클래스 하나로 날짜와 시간 기능을 제공했다. Date클래스는 밀리초단위로 표현이 된다. Date date = new Date(117, 8, 21); // 출력 결과 Thu Sep 21 00:00:00 CET 2017 Date클래스의 출력은 직관적이지 않고 JVM기본 시간대인 CET 즉, 중앙 유럽시간대를 사용했다. 자바 1.1에서 Date클래스의 대안으로 java.util.Calendar클래스를 제공했다. 하지만 Calendar역시 달의 인덱스는 0부터 시작하는 등의 설계 문제가 있었다. DateFormat같은 일부 기능을 제공했지만 Date클래스에만 작동했기에 개발자들에게 더 혼란을 가중시켰다. DateFormat은 스레드에 안전하..
모던자바인액션 11강 Optional Optional 클래스 소개 java.util.Optional Optional은 선택형값을 캡슐화하는 클래스다. 위의 그림처럼 Car가 null이 아니라 값이 없음을 나타낸다. Optional 클래스로 감쌀 경우 null이 아닌 Optional.empty 메서드로 Optional을 반환한다. Optional.empty는 싱글턴 인스턴스를 반환하는 정적 팩토리 메서드다. null은 NullPointerException이 발생하지만 Optional.empty()는 Optional객체이다. 그렇다고 모든 Null참조를 Optional로 대치하는 것은 바람직하지 않다. 메서드의 시그니처만 보고 선택형값인지를 구별해서 값이 없을 수 있는 상황에 적절하게 대응하도록 강제하는 효과가 있다. Optional적용 패턴 ..
백준 10448번 유레카 이론 자바 풀이 ❓문제 삼각수 Tn(n ≥ 1)는 [그림]에서와 같이 기하학적으로 일정한 모양의 규칙을 갖는 점들의 모음으로 표현될 수 있다. [그림] 자연수 n에 대해 n ≥ 1의 삼각수 Tn는 명백한 공식이 있다. Tn = 1 + 2 + 3 + ... + n = n(n+1)/2 1796년, 가우스는 모든 자연수가 최대 3개의 삼각수의 합으로 표현될 수 있다고 증명하였다. 예를 들어, 4 = T1 + T2 5 = T1 + T1 + T2 6 = T2 + T2 or 6 = T3 10 = T1 + T2 + T3 or 10 = T4 이 결과는 증명을 기념하기 위해 그의 다이어리에 “Eureka! num = Δ + Δ + Δ” 라고 적은것에서 유레카 이론으로 알려졌다. 꿍은 몇몇 자연수가 정확히 3개의 삼각수의 합으로 표현될 ..
백준 3040번 백설공주와 일곱 난쟁이 자바 풀이 ❓문제 매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다. 어느 날 광산에서 아홉 난쟁이가 돌아왔다. (왜 그리고 어떻게 아홉 난쟁이가 돌아왔는지는 아무도 모른다) 아홉 난쟁이는 각각 자신이 백설공주의 일곱 난쟁이라고 우기고 있다. 백설공주는 이런 일이 생길 것을 대비해서, 난쟁이가 쓰고 다니는 모자에 100보다 작은 양의 정수를 적어 놓았다. 사실 백설 공주는 공주가 되기 전에 매우 유명한 수학자였다. 따라서, 일곱 난쟁이의 모자에 쓰여 있는 숫자의 합이 100이 되도록 적어 놓았다. 아홉 난쟁이의 모자에 쓰여 있는 수가 주어졌을 때, 일곱 난쟁이를 찾는 프로그램을 ..
백준 2075번 N번째 큰 수 자바 ❓문제 N×N의 표에 수 N2개 채워져 있다. 채워진 수에는 한 가지 특징이 있는데, 모든 수는 자신의 한 칸 위에 있는 수보다 크다는 것이다. N=5일 때의 예를 보자. 12 7 9 15 5 13 8 11 19 6 21 10 26 31 16 48 14 28 35 25 52 20 32 41 49 이러한 표가 주어졌을 때, N번째 큰 수를 찾는 프로그램을 작성하시오. 표에 채워진 수는 모두 다르다. 🔠 입력 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. 🖨️출력 첫째 줄에 N번째 큰 수를 출력한다. ✍️ 예제 입력 5 12 7 9 15 5 13 8 11 19 6 21 1..
백준 1935번 후위표기식2 자바 풀이 ❓문제 후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오. 🔠 입력 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는 각 피연산자에 대응하는 값이 주어진다. 3번째 줄에는 A에 해당하는 값, 4번째 줄에는 B에 해당하는값 , 5번째 줄에는 C ...이 주어진다, 그리고 피연산자에 대응 하는 값은 100보다 작거나 같은 자연수이다. 후위 표기식을 앞에서부터 계산했을 때, 식의 결과와 중간 결과가 -20억보다 크거나 같고, 20억보다 작거나 같..
백준 5397번 키로거 자바 풀이 ❓문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 강산이는 키보드로 입력한 키는 알파벳 대문자, 소문자, 숫자, 백스페이스, 화살표이다. 🔠 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,0..
컬렉션 API 개선 자바9에서 작은 컬렉션 객체를 쉽게 만들 수 있는 방법을 제공한다. String List를 만들 때 List friends = Arrays.asList("Rophael", "Olivia", "Thibau"); 고정 크기의 리스트를 만들었지만 요소를 추가하거나 삭제할 수 없다. UnsupportedOperationException 예외 발생 위의 List에 friends.add("aaaa"); 이런식으로 요소를 추가할 경우 예외가 발생한다. 내부적으로 고정된 크기의 변환할 수 있는 배열로 구현되어 있기 때문이다. List friends = List.of("Raphel", "Olivia", "Thibaut"); friends.add("Chih-Chun"); List.of 팩토리 메소드를 이용해 리스트를 만들..

728x90
반응형