분류 전체보기
-
상속 (Inheritance) 상속이란 사전적 의미로 "일정한 친족 관계가 있는 사람 사이에서, 한 사람이 사망한 후에 다른 사람에게 재산에 관한 권리와 의무의 일체를 이어 주거나, 다른 사람이 사망한 사람으로부터 그 권리와 의무의 일체를 이어받는 일" 로 정의되고 있습니다. 자바에서는 상위(부모) 클래스의 멤버를 하위(자식) 클래스에서 재사용하기 위해서 사용하는 것을 상속이라고 합니다. 이렇게 재사용하게 되면 상위 클래스의 코드를 변경할 때 모든 하위 클래스들에게도 적용되므로 유지 보수성이 향상됩니다. 다만, 상속을 사용하면 클래스간 결합도가 높아지므로 확실한 IS-A 관계에서만 사용하는 것이 좋습니다. 사용법 extends라는 키워드를 사용해서 상속을 합니다. // 상위 클래스 class Animal..
자바 기초 - 상속상속 (Inheritance) 상속이란 사전적 의미로 "일정한 친족 관계가 있는 사람 사이에서, 한 사람이 사망한 후에 다른 사람에게 재산에 관한 권리와 의무의 일체를 이어 주거나, 다른 사람이 사망한 사람으로부터 그 권리와 의무의 일체를 이어받는 일" 로 정의되고 있습니다. 자바에서는 상위(부모) 클래스의 멤버를 하위(자식) 클래스에서 재사용하기 위해서 사용하는 것을 상속이라고 합니다. 이렇게 재사용하게 되면 상위 클래스의 코드를 변경할 때 모든 하위 클래스들에게도 적용되므로 유지 보수성이 향상됩니다. 다만, 상속을 사용하면 클래스간 결합도가 높아지므로 확실한 IS-A 관계에서만 사용하는 것이 좋습니다. 사용법 extends라는 키워드를 사용해서 상속을 합니다. // 상위 클래스 class Animal..
2023.07.19 -
생성자 (Constructor) 생성자란 말 그대로 무언가를 생성하는 녀석을 의미합니다. 자바에서 무언가는 바로 객체를 의미합니다. 즉, 객체를 생성해 주는 녀석이라 생각하면 됩니다. 📌 사용법 사용법은 메서드와 거의 동일합니다만 메서드 명이 클래스 자기 자신이라는 것에 차이가 있습니다. 객체는 new 키워드와 함께 생성자를 호출하면 생성됩니다. // 객체 생성! Person person = new Person(); // 예시 클래스 public class Person{} 위에서 보면 클래스에 아무것도 없는데도 객체가 생성되었습니다. 이게 왜그러냐면 클래스에 기본 생성자가 없으면 컴파일러가 기본 생성자를 제공하기 때문입니다. public class Person{ // 생성자 문법 // 접근제한자 클래스명..
자바 기초 - 생성자생성자 (Constructor) 생성자란 말 그대로 무언가를 생성하는 녀석을 의미합니다. 자바에서 무언가는 바로 객체를 의미합니다. 즉, 객체를 생성해 주는 녀석이라 생각하면 됩니다. 📌 사용법 사용법은 메서드와 거의 동일합니다만 메서드 명이 클래스 자기 자신이라는 것에 차이가 있습니다. 객체는 new 키워드와 함께 생성자를 호출하면 생성됩니다. // 객체 생성! Person person = new Person(); // 예시 클래스 public class Person{} 위에서 보면 클래스에 아무것도 없는데도 객체가 생성되었습니다. 이게 왜그러냐면 클래스에 기본 생성자가 없으면 컴파일러가 기본 생성자를 제공하기 때문입니다. public class Person{ // 생성자 문법 // 접근제한자 클래스명..
2023.07.19 -
객체지향 프로그래밍 객체지향 프로그래밍에 대해서 알아보기 위해서는 우선 객체(Object)에 대해서 알아야 합니다. 객체란 사전적 의미로 주체에 반대되는 말로 주체가 활용하는 것, 실세계에 존재하거나 생각할 수 있는 것을 의미합니다. 간단하게 말해 우리 주변의 모든 것들을 객체라고 부릅니다. 객체를 지향한다라는 의미의 객체지향 프로그래밍은 주변의 많은 것들 오브젝트화(객체화)하여 프로그래밍 하는 것을 의미합니다. 게임을 좋아하시는 분이라면 게임 내에서 오브젝트가 의미하는게 대강 무슨 뜻인지 아실거라 생각합니다. 각각의 오브젝트가 모여서 각기 다른 역할을 하며, 이러한 오브젝트들이 모여 하나의 게임을 구성하는 것처럼 현실 세계를 객체를 통해 구현하는 것을 객체지향 프로그래밍이라고 할 수 있습니다. 객체지향..
자바 기초 - 객체 지향 프로그래밍 (OOP)객체지향 프로그래밍 객체지향 프로그래밍에 대해서 알아보기 위해서는 우선 객체(Object)에 대해서 알아야 합니다. 객체란 사전적 의미로 주체에 반대되는 말로 주체가 활용하는 것, 실세계에 존재하거나 생각할 수 있는 것을 의미합니다. 간단하게 말해 우리 주변의 모든 것들을 객체라고 부릅니다. 객체를 지향한다라는 의미의 객체지향 프로그래밍은 주변의 많은 것들 오브젝트화(객체화)하여 프로그래밍 하는 것을 의미합니다. 게임을 좋아하시는 분이라면 게임 내에서 오브젝트가 의미하는게 대강 무슨 뜻인지 아실거라 생각합니다. 각각의 오브젝트가 모여서 각기 다른 역할을 하며, 이러한 오브젝트들이 모여 하나의 게임을 구성하는 것처럼 현실 세계를 객체를 통해 구현하는 것을 객체지향 프로그래밍이라고 할 수 있습니다. 객체지향..
2023.07.18 -
코드 이 문제를 공식으로 풀기 위해서는 시그마의 성질에 대해서 알아야 합니다. 다음 아래의 공식들을 잘 봐주세요. 문제를 시그마를 이용하여 표현하면 다음과 같습니다. 위의 수식을 풀어보면 다음과 같습니다. package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class No_24267 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); long n = Long...
백준 - 24267번 알고리즘 수업 - 알고리즘의 수행 시간 6코드 이 문제를 공식으로 풀기 위해서는 시그마의 성질에 대해서 알아야 합니다. 다음 아래의 공식들을 잘 봐주세요. 문제를 시그마를 이용하여 표현하면 다음과 같습니다. 위의 수식을 풀어보면 다음과 같습니다. package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class No_24267 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); long n = Long...
2023.07.16 -
코드 package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class No_11653 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); // 소수를 찾으려면 주어진 수의 제곱근만큼만 돌아보면 찾을 수 있음 for (i..
백준 - 11653번 소인수분해코드 package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class No_11653 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); // 소수를 찾으려면 주어진 수의 제곱근만큼만 돌아보면 찾을 수 있음 for (i..
2023.07.15 -
코드 해당 수가 소수인지 찾는 문제입니다. 에라토스테네스의 체를 사용하면 쉽게 구할 수 있습니다. 자세한 내용은 아래 링크를 참고하세요. https://dokuny-devlog.tistory.com/47 알고리즘 - 소수 구하기 소수 (Prime Number) 소수란 자신보다 작은 2개의 자연수를 곱해 만들 수 없는 1보다 큰 자연수를 의미합니다. 알고리즘에서 소수를 구하는 문제가 간혹 나오곤 하기 때문에 어떤 식으로 소수를 구하 dokuny-devlog.tistory.com package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.S..
백준 - 1978번 소수 찾기코드 해당 수가 소수인지 찾는 문제입니다. 에라토스테네스의 체를 사용하면 쉽게 구할 수 있습니다. 자세한 내용은 아래 링크를 참고하세요. https://dokuny-devlog.tistory.com/47 알고리즘 - 소수 구하기 소수 (Prime Number) 소수란 자신보다 작은 2개의 자연수를 곱해 만들 수 없는 1보다 큰 자연수를 의미합니다. 알고리즘에서 소수를 구하는 문제가 간혹 나오곤 하기 때문에 어떤 식으로 소수를 구하 dokuny-devlog.tistory.com package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.S..
2023.07.15 -
코드 이런 문제를 풀 때는 우선 규칙을 찾아야 합니다. 지그재그로 가는 순서는 1, 2, 3, 4, 5... 이런 식으로 크기가 증가하는 모습을 보입니다. 증가하는 크기만큼 각 대각선의 시작과 끝의 최대값은 순서값(인덱스)와 동일하게 됩니다. 각 대각선에 위치한 박스들의 값을 차례대로 더하면 그 대각선의 끝번의 차례를 알 수 있습니다. 또한, 주어진 X는 어떠한 대각선에 항상 위치하므로 차례는 어떠한 대각선의 끝 차례보다 클 수 없습니다. 이것을 통해서 X의 위치를 계산할 수 있습니다. package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class..
백준 - 1193번 분수찾기코드 이런 문제를 풀 때는 우선 규칙을 찾아야 합니다. 지그재그로 가는 순서는 1, 2, 3, 4, 5... 이런 식으로 크기가 증가하는 모습을 보입니다. 증가하는 크기만큼 각 대각선의 시작과 끝의 최대값은 순서값(인덱스)와 동일하게 됩니다. 각 대각선에 위치한 박스들의 값을 차례대로 더하면 그 대각선의 끝번의 차례를 알 수 있습니다. 또한, 주어진 X는 어떠한 대각선에 항상 위치하므로 차례는 어떠한 대각선의 끝 차례보다 클 수 없습니다. 이것을 통해서 X의 위치를 계산할 수 있습니다. package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class..
2023.07.15 -
코드 이 문제는 반복문을 이용해서 하루하루를 계산하게 되면 시간초과가 발생합니다. A가 2, B가 1일 때 V까지 도달하려면 기본적으로 10억번의 반복문이 돌아야하고, 그 안에 각종 연산자들까지 포함한다면 시간제한 0.25초를 넘어서게 됩니다. 그러면 반복문을 사용하지 않고 푸는 방법으로는 단순 식을 세워서 계산하는 방식이 있습니다. 일단 하루를 온전히 보낸다(낮과 밤 모두 보냄)는 가정하에 오를 수 있는 높이는 A - B 입니다. 그런데, 문제를 잘보면 정상에 오르는 순간 미끄러져 내려가지 않는다고 합니다. 이 부분을 주의해야합니다. 예를 들어, V가 5이고 A는 3, B는 2인 경우 하루에 오를 수 있는 높이는 1입니다. 그러면 단순히 5 / 1 = 5일로 계산이 됩니다. 그런데 차근차근 한번 살펴 ..
백준 - 2869번 달팽이는 올라가고 싶다.코드 이 문제는 반복문을 이용해서 하루하루를 계산하게 되면 시간초과가 발생합니다. A가 2, B가 1일 때 V까지 도달하려면 기본적으로 10억번의 반복문이 돌아야하고, 그 안에 각종 연산자들까지 포함한다면 시간제한 0.25초를 넘어서게 됩니다. 그러면 반복문을 사용하지 않고 푸는 방법으로는 단순 식을 세워서 계산하는 방식이 있습니다. 일단 하루를 온전히 보낸다(낮과 밤 모두 보냄)는 가정하에 오를 수 있는 높이는 A - B 입니다. 그런데, 문제를 잘보면 정상에 오르는 순간 미끄러져 내려가지 않는다고 합니다. 이 부분을 주의해야합니다. 예를 들어, V가 5이고 A는 3, B는 2인 경우 하루에 오를 수 있는 높이는 1입니다. 그러면 단순히 5 / 1 = 5일로 계산이 됩니다. 그런데 차근차근 한번 살펴 ..
2023.07.15 -
코드 이 문제의 경우, 입력의 끝을 알 수 없기 때문에 헷갈리는 문제입니다. EOF라는 개념을 알아야 풀 수 있는 문제인데, 자세한 내용은 이 글을 참고하시면 좋을 것 같습니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb ..
백준 - 10951번 A+B - 4코드 이 문제의 경우, 입력의 끝을 알 수 없기 때문에 헷갈리는 문제입니다. EOF라는 개념을 알아야 풀 수 있는 문제인데, 자세한 내용은 이 글을 참고하시면 좋을 것 같습니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb ..
2023.07.14 -
코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); StringTokenizer st; while (true) { st = new StringTokenizer(br.readLine())..
백준 - 10952번 A+B - 5코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); StringTokenizer st; while (true) { st = new StringTokenizer(br.readLine())..
2023.07.14 -
코드 1번 별찍기와 다르게 공백을 넣어주면 됩니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); for (int i = 1; i
백준 - 2439번 별 찍기 - 2코드 1번 별찍기와 다르게 공백을 넣어주면 됩니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); for (int i = 1; i
2023.07.14 -
코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); for (int i = 0; i < T; i++) { for (int j = 0; j
백준 - 2438번 별 찍기 - 1코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); for (int i = 0; i < T; i++) { for (int j = 0; j
2023.07.14