전체 글 90

[JAVA] 추상, 인터페이스

(제대로 이해했나 스스로 예제 만들어보기) (추상클래스와 인터페이스 차이 있다. 혼동하기 말기) 추상 클래스 : 클래스들의 공통요소들을 뽑아 상속구조로 이용. abstract, extends 키워드 사용 공통 요소들을 조상 클래스로 주고 이를 각각 상속받아 사용하는 식.(상속받는 메서드들은 메서드 오버라이딩으로 재정의) 구현 클래스들은 상속받을 이 abstract 메서드들을 다 재정의해야할 의무가 있고, 어차피 오버라이딩해서 사용할거니까 조상 클래스의 메소드 내 구현부는 의미가 없어짐. -> 구현부는 세미콜론으로만 남겨버림 추상 클래스는 객체 생성이 불가(직접 사용할 일이 없으므로) 하나, 자식타입을 참조하여 객체 생성하는건 맞음 스스로 객체 생성해 사용하는게 아닌 자식 클래스를 생성해 사용한다 추상 메..

JAVA 2023.07.21

[JAVA] OOP - Encapsulation(작성중)

Encapsulation: 데이터 은닉과 보호 위함. - 정보 보호를 위해 멤버변수는 private로 보호하고, 공개되는 메서드인 getter 등을 통해 접근하도록 한다. 객체 생성 제어와 Singleton 패턴: - 객체 생성을 제한해야 할 경우: 여러개의 객체가 굳이 필요없을때. 수정가능한 멤버변수가 없고 기능만 있는 클래스일때 (==stateless한 객체) 이런경우 계속 여러개를 생성하기보다는 하나 생성해서 재사용하는게 좋기 때문! - Singleton이란: 생성자의 접근제한자를 private로 설정하고 내부에서만 직접 객체를 생성. 외부에서 private member에 접근가능한 getter가 필요하다 (setter는 필요할일 x) 객체 생성없이 외부에서 접근을 가능하게 하기 위해 getter(..

JAVA 2023.07.20

0719 자바 Inheritance, Constructor

생성자(Constructor): 클래스명과 이름 동일, 반환타입이 없음. 특징: 클래스 내에서 명시적인 생성자를 만들지 않는다면 디폴트 생성자가 컴파일러에 의해 기본으로 생성된다. OOP- 2. Inheritance : 기존 상위 클래스의 자산 (멤버) 를 자식 (예) 클래스에서 재사용하기 위함. (생성자 & 초기화 블록은 상속 x) ⇒ 코드 절감, 유지보수 위함. 키워드: extends * Object 클래스: 모든 클래스의 조상 클래스 (최상위 클래스) 별도 extends 선언 없으면 자동으로 extends Object 생략된 것. → 모든 클래스엔 Object 클래스에 정의된 메서드가 있음!! : 자바는 단일상속만 지원한다. (다중상속 ×) → 대신 interface 와 포함관계 (has a) 로 ..

JAVA 2023.07.19

[SWEA] 1208번 Flatten 문제

나름 시간을 줄여서 풀고자 노력했다 package D3; import java.io.*; import java.util.Arrays; import java.util.StringTokenizer; public class SW_1208 { //Flatten 문제 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st; int dump; //최대덤프횟수 for ..

[SWEA] 2805 - 농작물 수확하기

package D3; import java.io.*; import java.util.StringTokenizer; public class SW_2805 { //농작물 수확하기 문제 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int T = Integer.parseInt(br.readLine()); //테스트케이스 개수 int size; //농장의 크기 sizw X size int..

[SWEA] dfs/백트래킹 - 2806번 N_Queens 문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV7GKs06AU0DFAXB&categoryId=AV7GKs06AU0DFAXB&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=1 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 바빠서 자세한 풀이는 생략.. 전에 풀어본 코어문제?랑 좀 비슷했다 풀이코드 package D3; import java.io.*..

[백준알고리즘] 문자열/그리디 - 1541번 잃어버린 괄호 문제

https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 요새 문자열 문제를 안풀어본것 같아서 함 풀어봤다. -연산자가 나온다면 앞에 있는수는 작게, 뒤에 오는수는 크게 만들어서 풀면 되겠다고 생각했으나 문자열을 어떻게 처리해서 연산시켜야 할지 막막했다.. 해결방법 관건은 -연산이다. + 연산자들을 묶어서 먼저 합쳐준 뒤 마지막에 그것들을 갖고 -연산을 하면 된다 문자열을 먼저 - 을 구분자로 split함수를 통해 나눠서 배열에 저장하고 (그러면 ..

[백준알고리즘] dfs - 2606번 바이러스 문제

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net dfs만 구현하면 풀리는 문제 참고로 1번 컴퓨터는 제외한 수를 출력해야한다! 인접리스트 + dfs로 풀었다 package baekjoonWeek6; import java.io.*; import java.util.ArrayList; import java.util.StringTokenizer; public class BJ_2606 { //백준 바이러스 문제 static ArrayList[] al; sta..

알고리즘/dfs 2023.05.15

[백준알고리즘] 그리디 - 13305번 주유소 문제

https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 간단하게 풀이방식을 설명하자면 현재 위치보다 뒤에 있는 도시중 더 기름값이 싼 도시가 있다면 거기까지의 거리만큼만 기름을 산다 만약 현재 위치의 기름값이 가장 싸고 뒤에 오는 모든 도시들의 기름값이 더 비싸다면 현재 위치에서 마지막 도시까지 갈 만큼의 기름을 모두 사는 식이다 58점을 받았는데 이유는 다루는 값의 범위가 크다보니 int범위 초과 때문이었다 long으로 바꾸면 해결된다..

[백준알고리즘] bfs - 7562번 나이트의 이동 문제

https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net bfs 활용문제 x가 행을 나타내고 y가 열을 나타내는 의미로 했는데 이 두개 순서를 헷갈려서 여기저기 잘못써놓느라 몇번만에 맞았다.. 아오~헷갈리니까 다음부터는 x, y 말고 col, row로 쓰던지 해야겠다. 아직도 행, 열이 헷갈리다니.......... package baekjoonWeek5; import java.io.*; import java.util.LinkedList; import ja..

알고리즘/bfs 2023.05.13