자바116 try-with-resources try-with-resoucre를 안썼을경우 사용 후에 반납해주어야 하는 자원들은 Closable 인터페이스를 구현하고 있으며, 사용 후에 close 메소드를 호출해주어야 했다. Java7 이전에는 close를 호출하기 위해서 try-catch-finally를 이용해서 Null 검사와 함께 직접 호출해야 했는데, 대표적으로 파일의 내용을 읽는 경우를 다음과 같이 구현할 수 있다. public static void main(String[] args) throws IOException { String filePath = "C:\\KOSATEMP\\a.txt"; FileInputStream fis = null; BufferedInputStream bis = null; try { fis = new FileInp.. 자바/기본 2024. 3. 19. 디자인 패턴 - 추상 팩토리 패턴 추상 팩토리 패턴 추상 팩토리 패턴은 연관성이 있는 객체 군이 여러개 있을 경우 이들을 묶어 추상화하고, 어떤 구체적인 상황이 주어지면 팩토리 객체에서 집합으로 묶은 객체 군을 구현화 하는 생성 패턴 팩토리 메서드 패턴 vs 추상 팩토리 패턴 객체 생성 과정을 추상화한 인터페이스를 제공객체 생성을 캡슐화함으로써 구체적인 타입을 감추고 느슨한 결합 구조를 표방 new로 직접 생성하는것을 막음 (private 생성자) 그래서 구체적인 객체의 타입을 감추고 인터페이스화 된 팩토리에 접근해서 객체를 생성하는것은 두 패턴의 공통점이다. 차이점 팩토리 메서드 패턴은 한 팩토리당 한 종류의 객체 생성을 지원 한다 예를 들어 버튼 팩토리가 있으면 A버튼 , B버튼 ,C버튼과 같이 버튼이라는 추상클래스를 상속받은 버튼 .. 자바/기본 2024. 3. 15. 자바 - 상속 상속 부모 클래스(상위 클래스)와 자식 클래스(하위 클래스)가 있고 자식 클래스는 부모 클래스를 선택해서, 그 부모의 멤버를 상속받아 쓸 수 있는것이 상속이다. 상속을 하는 이유는 이미 만들어진 클래스를 재사용해서 새로운 클래스를 만들기 위함이다. 효율적이고, 개발시간을 줄여준다. 상속받은 모든 필드,메소드를 자식클래스에서 사용할 수 있는것은 아니다. - 부모클래스의 private 접근제한자를 가지는 필드 및 메소드는 자식이 물려받을수없다. - 부모와 자식클래스가 서로 다른 패키지에 있다면 부모의 default 접근제한자를 가지는 필드와 메소드에 접근할 수 없다. - 그 이외의 접근제한자를 가지는 필드와 메소드는 모두 상속의 대상이 된다. 부모 생성자의 호출 - super(...); 자바에서 자식 객체를.. 자바/기본 2024. 3. 11. 자바 - 클래스 (내부클래스-인스턴스 클래스,static 클래스) 내부 클래스(= 중첩클래스,Inner클래스) 내부 클래스(inner class)란 하나의 클래스 내부에 선언된 또 다른 클래스를 의미한다. 보통 사용자 클래스 자료형이 필요하면, 메인 클래스 외부에 선언하거나, 따로 독립적인 클래스 파일을 만들어 불러와 사용해 왔다. 내부 클래스는 대신 클래스 내에 선언되어 사용되며, 내부에 정의된다는 점을 제외하고는 일반적인 클래스와 다르지 않다. 우리가 어느 클래스에 변수나 상수가 필요하다면 클래스 멤버로서 클래스 내에서 선언하여 사용해 왔듯이, 선언 주체를 변수에서 클래스로 바꾼다면 그것이 내부 클래스인 것이다. 이처럼 내부 클래스는 보통 두 클래스가 서로 긴밀한 관계가 있거나, 하나의 클래스또는 메소드에서만 사용되는 클래스일 때 이용되는 기법이라고 보면 된다. p.. 자바/기본 2024. 3. 6. 자바 - 배열 , 제어문 배열 배열이란? 배열(Array)은 자료구조 중 하나로, 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 방법이다. 배열은 인덱스(index)를 사용해 각 요소에 접근할 수 있다. 이러한 특징 때문에 배열은 데이터의 순서를 유지하고, 특정 위치의 요소에 빠르게 접근할 수 있는 장점이 있다. 배열(Array)의 장점 및 단점 장점 빠른 접근 배열은 인덱스를 사용하여 요소에 빠르게 접근할 수 있다. 인덱스를 알고 있다면 원하는 위치의 요소에 시간복잡도 O(1)에 접근할 수 있다. 메모리 공간의 효율성 배열은 연속된 메모리 공간에 요소를 저장하므로, 메모리 공간을 효율적으로 사용할 수 있다. 또한, 요소들은 순서대로 저장되기 때문에 인접한 요소들에 대한 캐시 지역성이 좋아 성능 향상에 도움을 줄 .. 자바/기본 2024. 3. 4. 자바 n진법 <-> 10진법 바꾸는법 n진법 -> 10진법 Integer.parseInt(값,진법) 반환값은 Int이다. String num = "01101"; // 2진법 기준 값 = 13 //해당 문자열의 숫자값을 도출 -> 1101 System.out.println(Integer.parseInt(num)); //전달 인자가 2진법으로 표현됬음을 알리고, 10진법으로 바꿔달라는 요청 // 01101을 2진수 보고 10진법으로 바꿨을시 값 -> 13 System.out.println(Integer.parseInt(num,2)); // 01101을 4진수로 보고 10진법으로 바꿨을시 값 -> 81 System.out.println(Integer.parseInt(num, 4)); // 01101을 8진수로 보고 10진법으로 바꿨을시 값 -> .. 자바/++ 2024. 1. 18. 프로그래머스] n으로 표현 https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. DFS DFS를 통해 +,-,*,/ 사칙연산을 하는것도 중요하지만 현재 값에다가 N,NN,NNN.... 의 값을 사칙연산해야한다. import java.util.*; class Solution { static int n,target; static int result = Integer.MAX_VALUE; public int solution(int N, int number) { n = N;.. 자바/알고리즘 문제 풀이 2023. 5. 17. repeat로 문자열 반복해서 이어붙이기 https://www.javastring.net/java/string/java-string-repeat-method Java String repeat() Method Java String repeat() method returns a new string whose value is the concatenation of this string given number of times. www.javastring.net public static void main(String[] args) throws NumberFormatException, IOException { String a = "hello"; System.out.println(a.repeat(0)); //빈값 System.out.println(a.repe.. 자바/++ 2023. 5. 17. 프로그래머스] 퍼즐 조각 채우기 https://school.programmers.co.kr/learn/courses/30/lessons/84021 참고 https://tmdrl5779.tistory.com/206 풀이 1. bfs를 이용하여 board 에서는 빈칸의 조각을 table에서는 퍼즐의 조각에 대한 정보를 저장한다. 각 조각의 정보는 원점을 기준(2차원배열을 사용하므로 i인덱스 0 j 인덱스0를 의미)으로 정렬한다. bfs를 이용하여 각 노드그룹을 방문하고, 각 노드그룹의 좌표값들을 저장한다고 생각하면 된다. [board, table의 정보가 2차원배열로 들어온다. xy그래프로 생각해서 원점기준 정렬을 하지만 실제로 저장된 조각의 정보 좌표는 2차원배열의 인덱스로 보면 된다.] 조각들의 좌표 정렬은 i인덱스의 오름차순, i가 .. 자바/알고리즘 문제 풀이 2023. 5. 10. 프로그래머스] 아이템줍기 https://school.programmers.co.kr/learn/courses/30/lessons/87694 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 2차원배열로 들어오는 직사각형의 정보를 받고, 테두리는 1로 채우고, 내부내용은 2로 채워서 전체 테두리 부분을 구한다. x,y는 y가 2차원배열의 i인덱스 , x가 2차원배열의 j인덱스로 생각하고 진행한다. 문제발생 -> 꺾어서 진행해야하는부분이 bfs로 통과할때 문제가 발생함. 꺾어서 내려가야하는데 바로 쭉내려가버림 정답은 17인데 안쪽으로 들어갔다나오지않아서 15로 출력됨. 해결방안 -.. 자바/알고리즘 문제 풀이 2023. 5. 9. 프로그래머스] 단어 변환 https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 바꿀수있는단어를 큐에담아 bfs진행 import java.util.*; class Solution { static boolean[] visited; static int n; static int result =0; public int solution(String begin, String target, String[] words) { /* 문자의 차이가 1개인 단어를 찾아서 bfs진행 */ n .. 자바/알고리즘 문제 풀이 2023. 4. 27. 프로그래머스] 네트워크 https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 dfs또는 bfs가 몇번동작하는 문제 백준의 촌수 구하는 문제와 비슷. 문제는 간선의 정보를 주는것이 아니라 인접행렬을 전달해준다. 매번 간선의정보를 받아 인접리스트를 만들어서 사용했었다. 1. 인접행렬을 인접리스트로 바꿔서 푸는 방법 2. 인접행렬로 푸는 방법을 시도한다. 인접리스트 또는 인접행렬의 전체를 순회하며 방문한 노드인지 확인한다. 1. 인접행렬을 인접리스트로 바꿔서 푸는 방법 i.. 자바/알고리즘 문제 풀이 2023. 4. 27. 이전 1 2 3 4 ··· 10 다음