본문 바로가기

JAVA7

자바 StringBuilder를 통해 빠르게 출력하기 자바로 알고리즘 문제를 풀던 중 많은 출력을 해야 하는 문제를 종종 본다. 그럴 경우 단순히 System.out.print를 사용하면 시간 초과가 나는 경우가 종종 있다. 그럴 때는 StringBuilder 를 이용하여 출력을 하면 훨씬 빠르게 출력을 할 수 있다. public static StringBuilder sb = new StringBuilder(); 위와 같이 선언 후 append를 통해 출력할 것을 넣을 수 있다. 아래는 예시 코드이다. for (int j = 0; j < result.size(); j++) { sb.append(result.get(j) + " "); } sb.append('\n'); 위와 비슷한 형식으로 출력을 만들고 System.out.println(sb); 위와 같이 출.. 2021. 12. 8.
자바기본개념 - 자바가상머신 및 가비지 컬랙션 이 글은 자바 프로그래밍 면접 이렇게 준비한다(노엘 마크엄) 및 여러 블로그들을 참고하며 간단한 부분들만 정리한 글이다. 자바 가상머신(JVM)은 프로그램이 실행되는 플랫폼이다. 플랫폼은 여러가지 기능을 제공해주는 실행환경이다. 자바 컴파일러는 .java파일을 .class 라는 Java Byte Code로 컴파일한다. 이 바이트코드는 기계어가 아니기 때문에 OS에서 바로 실행되지 않는다. 이때 JVM은 OS에 맞게 해석해 주는 역할을 한다. 여기서 다른 컴파일 언어와의 차이점은 JVM은 운영체제와 애플리케이션 사이에 위치하면서 애플리케이션이 플랫폼에 상관없이 독립적으로 실행될 수 있도록 만들어 준다. 즉, OS에 상관없이 실행한다는 것이다. JVM은 모든 중요한 애플리케이션 개발에서는 애플리케이션이 JV.. 2021. 10. 22.
자바 핵심 기본 내용 이 글은 'JAVA 프로그래밍 면접 이렇게 준비한다 - 노엘 마크엄(번역: 정원천)'을 보면서 자바에 대한 핵심적이고 기본적인 내용들을 간단하게 정리한 글이다. 1. 원시 타입Boolean, int, double 같은 각각의 기본 타입은 원시타입이라고 한다. JVM은 이들을 객체라고 알려진 참조 타입과는 다른 방식으로 다룬다. 그 이유는 원시 타입은 객체와 다르게 Null이 될 수 없기 때문이다. int와 long타입의 변수를 컴파일러는 두 터입을 구분할 수 있어야 하기에 long 타입이면 뒤에 L을 붙여서 구분한다. float와 double 사이에서도 F, D로 구분한다. char는 값의 범위가 유니코드 값이므로 0~65535까지이다.(unsigned) 하위 타입에서 상위 타입으로 바로 변환할 수 있지.. 2021. 10. 17.
java - Priority Queue(우선순위 큐) 자바로 알고리즘 문제를 풀면서 정렬관련 문제를 풀 때 ArrayList를 만들고 데이터를 빼거나 넣고 넣을 때마다 정렬을 수행했었다. 하지만 이렇게 진행하다보니 시간이 매우 많이 초과되면서 이를 해결할 방법을 찾다가 '우선순위큐' 라는 것을 찾고 간단하게 정리해 보려한다. 일반적으로 큐는 데이터를 일시적으로 쌓아두기 위한 자료구조로 FIFO(First In First Out)의 구조인데 먼저 들어온 데이터가 먼저 나가는 구조를 가진다. PriorityQueue는 큐와 비슷하지만 먼저 들어온 순서대로 데이터가 나가는 것이 아닌 우선순위를 먼저 결정하고 그 우선순위에 따라 순서대로 나가는 자료구조이다. 우선순위 큐는 힙을 이용하여 구현하는 것이 일반적이다. 데이터를 삽입할 때 우선순위를 기준으로 최대힙 혹은.. 2021. 10. 5.
JAVA - Class 객체의 ArrayList 다중 정렬 ArrayList 를 class로 정의한 후 정렬 해야할 때 Comparator를 만들어서 정렬을 할 수 있다. 사용방식은 아래와 같다. private static class Meeting { private Long startTime; private Long endTime; public Meeting(Long startTime, Long endTime) { this.startTime = startTime; this.endTime = endTime; } public Long getStartTime() { return startTime; } public Long getEndTime() { return endTime; } } static class MeetingComparator implements Compa.. 2021. 9. 13.
자바 매우 큰 수를 표현하는 법 ( BigInteger) 백준문제를 풀면서 int, long 보다 더 큰 범위의 수를 구하는 문제를 접하면서 찾은 방식이다. 우선 BigInteger를 아래와 같이 선언한다. import java.math.BigInteger; BigInteger bi = new BigInteger("123"); 사칙연산은 일반적인 연산과 다르게 내장 메서드를 이용해야 한다. BigInteger bi1 = new BigInteger("10"); BigInteger bi2 = new BigInteger("100"); System.out.println(bi1.add(bi2));//덧셈 System.out.println(bi1.subtract(bi2));//뺄셈 System.out.println(bi1.multiply(bi2));//곱셈 System... 2021. 9. 1.
JAVA 스트림(Stream) 팀 프로젝트를 하면서 list를 다룰 때 종종 쓰던 것이 있는데 그것이 Stream이었다. 이 글은 다른 블로그의 내용을 참고로 내가 찾기 쉽고 보기 편하게 핵심적인 설명 및 예시만 을 정리한 글이다. 아래는 참고한 블로그 이다. 내가 적은 거보다 훨씬 잘 설명해주고 있으니 확인해보기 바란다. https://futurecreator.github.io/2018/08/26/java-8-streams/ Java 스트림 Stream (1) 총정리 이번 포스트에서는 Java 8의 스트림(Stream)을 살펴봅니다. 총 두 개의 포스트로, 기본적인 내용을 총정리하는 이번 포스트와 좀 더 고급 내용을 다루는 다음 포스트로 나뉘어져 있습니다. Java 스트 futurecreator.github.io 스트림을 사용하는 .. 2021. 7. 1.