본문 바로가기

분류 전체보기

(70)
[백준 : JAVA] 1929 소수 구하기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class silver3_1929 { static boolean[] primeNum; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(..
[알고리즘] DP(Dynamic Programming) 동적 계획법 DP알고리즘은 복잡한 문제를 여러 개의 작은 부분 문제(Sub-Problem)로 나누어 해결하는 방법이며 핵심은 Memoization 기법이라고 볼 수 있다. Memoization(메모이제이션) 호출시 이전 계산한 값을 다시 계산하지 않도록 저장하여 전체적인 실행 속도를 향상시키기 위한 기술이다. (배열과 같은 자료구조에 계산된 값을 저장 -> 인덱스값을 통한 불러오기) 예시로는 피보나치 수열을 들 수 있다. 피보나치 수열을 구할때 f(5)값을 구하려면 f(4)와 f(3)이 필요하고 f(4)를 구하려면 f(3)과 f(2)가 필요하다 이러한 중복적인 값을 구할때 이미 구한값들을 Memoization 기법을 통해 배열등에 저장한후 불러오면 중복값을 다시 풀지 않고 불러올 수 있다. 피보나치 수열을 그냥 풀게..
[자바] JVM 메모리 구조 자바의 프로그램의 실행 구조를 살펴보면, 자바 소스파일은 자바 컴파일러에 의해 바이트 코드(class 파일)로 변환된다. 바이트 코드를 JVM에서 읽어들인 다음 Class Loader를 통해 JVM Runtime Data Area로 로딩하게 된다. 로딩된 바이트코드들을 Execution Engine에서 명령어 단위로 읽어(해석)서 실행한다. Garbage Collector는 힙메모리 영역에 생성된 객체들 중에서 참조되지 않은 객체들을 탐색 후 제거한다. 이때 GC가 제거하는 시간은 언제인지 정확히 알 수 없다. GC역할을 수행하는 스레드를 제외한 나머지 모든 스레드들은 일시정지 상태가 된다. GC의 대상으로는 Heap area와 Method area가 있다. Method area : 모든 쓰레드가 공유하..
[자바] Tree Set 개념 및 활용 TreeSet은 이진 탐색 트리를 이용한 Set이다. 저장할때 정렬하면서 저장을 하기 때문에 따로 정렬을 할 필요가 없다. public static void main(String[] args) { TreeSet set = new TreeSet(); String from = "b"; String to = "d"; set.add("abc"); set.add("alien"); set.add("bat"); set.add("car"); set.add("Car"); set.add("dance"); set.add("dZZZZ"); set.add("dzzzz"); set.add("elephant"); set.add("elevator"); set.add("fan"); set.add("flower"); set.add("d..
[자바] Map과 Iterator Map 맵은 효율성면에서 굉장히 좋은 컬렉션이라고 생각한다. 키(key)와 값(value)를 한쌍(pair)으로 저장하고 있다. 키는 중복될 수 없고, 값은 중복이 허용된다. 만약 Map에 (1,3) 이 저장되고 (1,4)가 저장되면 나중에 들어온 (1,4)로 덮여쓰여진다. void clear() // Map의 모든 객체를 삭제한다. boolean containsKey(Object key) // key객체와 일치하는 Map의 key 객체가 있으면 true 없으면 false를 리턴한다. boolean containsValue(Object value) // value값이 있으면 true, 없으면 false를 리턴한다. Set entrySet() // Map에 저장된 key-value쌍을 Map.Entry타입..
[자바] Iterator, ListIterator 개념 및 사용법 Itorator 컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스 public interface Iterator{ boolean hasNext(); Object next(); void remove(); } public interface Collection{ ... public Iterator iterator(); ... } 컬렉션에 저장된 각 요서에 접근하는 기능을 가진 Iterator 인터페이스를 정의하고, Collection 인터페이스에는 Iterator를 구현한 클래스의 인스턴스를 반환하는 iterator()를 정의하고 있다. List list = new ArrayList(); Iterator it = list.iterator(); while(it.hasNext()){ // boolean has..
[백준 : JAVA] 4158 CD public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while (true){ StringTokenizer st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); if(a==0&&b==0)break; int cnt = 0; HashSet list = new HashSet(); int[] arr = new int[a]; f..
[백준 : JAVA] 2161 카드1 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Card1 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int j =0; StringBuilder sb= new StringBuilder(); List list..
[12기] 항해99 1주차 WIL 항해 99 첫 미니 프로젝트 첫 미니 프로젝트는 ajax를 통한 json형식의 데이터를 이용해 서버와 통신하는 방식으로 진행했다. 처음엔 JWT토큰을 이용해 회원가입을 진행하였고, 그러한 토큰값을 이용해 누가 글을 작성했는지, 누가 투표를 했는지 알 수 있게 해주었다. 이렇게 제대로 깃을 이용해 프로젝트를 합치는것이 처음이었어서 많은 시행착오가 있었는데 충돌 방지와 충돌시 해결법등 여러 깃에대한 공부를 하게되어 좋은 경험이었다. 특히 프로젝트 병합과정을 진행할때 서로 작성해둔 변수명이 달라서 다같이 모여서 합쳤던 기억이 난다. 이 프로젝트를 진행할때 js와 python 언어를 이용하였는데 익숙치 않은 언어라 코드를 처음 짤때 제대로 못짜서 많은 오류들이 중간중간 발생하였다. 그로인해 추가적인 기능작업도 ..
[자바] static 메모리 Static 메모리 static 키워드를 사용하면 데이터가 고정 메모리에 올라가기 때문에 효율적이고, static영역에 저장된 메모리는 모든 객체가 공유한다는 장점이 있지만, Garbage Collector가 관리하지 않아 무분별하게 사용하면 할당되지 않은 메모리의 낭비가 심해진다. static 변수는 클래스 변수다 static 키워드가 붙은 메소드는 객체를 생성하지 않고도 메소드에 접근이 가능하다. static 메소드 내부에서 Instance 메소드를 호출할 수 없다. - > 인스턴스 메소드는 반드시 객체 생성 후 호출 가능. class StaticStudyClass{ void instanceMethod() {} //인스턴스 메서드 생성 static void staticMethod() {} //stat..