본문 바로가기

전체 글

(118)
[JAVA] 백준 2615 - 오목 🤔 문제 접근 정답 비율에서 알 수 있듯이 상당히 어려운 문제였다. 초기 상하좌우, 대각선 4방향으로 총 8가지 방향 벡터를 선언하고 재귀 호출을 통해 놓여진 돌의 개수가 5개인지 확인하도록 했다. 놓인 돌이 5개고 같은 방향으로 한번 더 진행 했을 때 같은 돌이 놓여져 있거나 초기 위치에서 한 칸 뒤로 갔을 때 같은 돌이 놓여져 있는 경우 놓인 돌이 6개 이상이 되므로 다른 오목을 찾게 끔 풀었다. 하지만 초기 풀이에서 놓친 것이 몇 가지 있었는데 만약 오목일 경우 오목을 이루는 돌들 중 가장 왼쪽, 그리고 윗쪽에 있는 돌의 좌표를 출력해야 했다. 이 점을 놓치고 초기 좌표만 정답으로 출력하게 끔 했고 당연히 계속 틀렸다. 또한 방향 벡터가 8개일 필요없이 4가지 방향을 가지고 반대 방향일 경우를 고려..
[JAVA] 백준 - 2023 신기한 소수 🖥️ 문제 🎓 문제 풀이 입력으로 신기한 소수의 자릿수가 주어진다. 10미만의 소수는 2,3,5,7이 있으므로 소수를 미리 배열에 정의했다. 왼쪽에서부터 시작하여 n자릿수가 되기까지의 숫자가 전부 소수가 되어야함을 유의하여 풀어야한다. 🚨CODE import java.io.*; import java.util.*; public class Main { static String[] prime = {"2","3","5","7"}; static int n; static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(n..
[JAVA] 백준 - 11724 연결 요소의 개수 그래프 연결 요소가 몇개인지 그래프 탐색을 통해 알아내는 문제이다. 🚨CODE ✅DFS import java.io.*; import java.util.*; public class Main { static int[][] graph; static boolean[] visit; static int count = 1; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextTo..
자바 : 상속 📗 상속 ✅ 객체 지향의 상속 객체 지향에서의 상속이란 부모 클래스에서 만들어진 필드, 메소드를 자식 클래스가 물려 받는 것을 말한다. 상속을 통하여 간결하게 자식 클래스를 만들 수 있고 이는 곧 소프트웨어 생산성을 향상 시킨다. ✅ 상속의 장점 - 클래스의 간결화 멤버의 중복 작성이 불필요 - 클래스 관리 용이 클래스들의 계층적 분류 - 소프트웨어의 생산성 향상 클래스의 재사용 용이 새로운 클래스 작성이 빨라짐 ✅ 자바의 상속 public class Person{ .... } // 상속 선언은 extends public class Student extends Person{ // Person을 상속받는 Student .... } public class StudentWorker extends Student..
자바 : static, final 📗 static 멤버와 non-static 멤버 ✅ static static 은 전역 변수나 전역 함수를 만들 때, 그리고 클래스의 여러 객체들이 공유하도록 공유 멤버를 작성할 때 활용한다. ✅ non - static 멤버 class Sample{ int n; void start(); } ✅ static 멤버 class Sample{ static int n; static void start(); } non-static 멤버 static 멤버 공간적 특성 멤버는 객체마다 별도로 존재 -> 인스턴스 멤버라고도 부름 멤버는 클래스당 하나 생성 멤버는 객체 내부가 아닌 별도의 공간(클래스 코드가 적재되는 공간)에 생성 -> 클래스 멤버라고 부름 시간적 특성 객체 생성 시에 멤버가 생성됨 객체가 생성한 후 멤버를..
자바 : 객체 배열과 메소드 📗 객체 배열 객체 배열 생성 및 사용 Class Circle{ 변수와 메소드 들... } Circle [] c; // Circle 배열에 대한 레퍼런스 변수 c 선언 c = new Circle[5]; // 레퍼런스 배열 생성 for(int i = 0; i 누구도 사용할 수 없게 된 메모리 Person a, b; a = new Person("손흥민"); b = new Person("페이커"); // b = a로 b를 가리키는 레퍼런스가 하나도 없게 됨 b = a; // b가 가리키던 객체는 '가비지'가 됨 ✅가비지 컬렉션 JVM의 가비지 컬렉터가 자동으로 가비지 수집, 반환 -> 가용 메모리로 반환 가비지 컬렉션 스레드에 의해 수행 - 개발자에 의한 강제 가비지 컬렉션 System.gc(); // 가비지..
자바 : 생성자 📗 생성자 생성자는 객체가 생성될 때 초기화를 위해 실행하는 메소드를 말한다. ✅ 생성자의 특징 - 생성자는 메소드이다. - 생성자 이름은 클래스 이름과 반드시 동일해야 한다. - 생성자는 매개 변수 개수를 달리하여 같은 이름으로 여러개 작성 가능하다. (오버로딩) - 생성자는 new 를 통해 객체를 생성할 때 객체 당 한번 호출 된다. - 생성자의 목적은 객체를 초기화 함에 있다. - 객체가 생성될 때 반드시 호출되기 때문에 따라서 하나 이상 선언되어야 한다. 만약 개발자가 생성자를 작성하지 않으면 컴파일러가 자동으로 기본 생성자를 삽입해준다. 📗 기본 생성자 기본 생성자는 매개 변수가 없고 아무 작업 없이 단순 리턴하는 생성자이다. 디폴트 생성자 라고도 한다. 기본 생성자가 없어도 컴파일 오류가 나지..
자바 : 클래스와 객체 📗 객체 지향 프로그래밍 객체 지향 프로그래밍에서는 모든 데이터를 객체 취급 하며 이러한 객체가 프로그래밍의 중심이 된다. 객체란 우리가 인식할 수 있는 사물이라고 설명할 수 있다. 이런 객체의 속성과 행동을 구체화하는 형태의 프로그래밍을 객체 지향 프로그래밍이라고 한다. ✅ 객체 지향의 특성 - 캡슐화 : 객체를 캡슐로 싸서 내부를 볼 수 없게 하는 것 외부의 접근으로 부터 객체를 보호한다. 자바는 클래스를 이용해 캡슐화를 시도한다. 메소드와 필드는 모두 클래스 내 구현한다. - 상속 : 상위 개체의 속성을 하위 개체가 모두 가지는 것을 말함 자식 클래스가 부모 클래스의 속성을 물려 받고 기능을 확장하는 것 - 다형성 : 같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작하도록 구현 메소드 오버로딩..

반응형