분류 전체보기 42

[JAVA 중급 스터디 - 2회차] 접근 제한자와 캡슐화

접근 제한자 접근 제한자는 외부로부터 데이터를 보호하고, 외부에는 불필요한(내부적으로만 사용되는) 부분을 감추기 위해 사용한다. 접근제한자의 종류 접근 제한자에는 public, protected, default, private이 있다. 생성자, 메서드, 필드의 접근 제한자로는 public, protected, default, private 이 모두 가능하다. 클래스의 접근 제한자로는 private, public 만 가능하다. public > protected > default > private 순으로 많은 접근을 허용함 private 모든 외부 호출을 막음 클래스 안으로 속성과 기능을 숨길 때 사용 외부 클래스에서 private 클래스 내부의 기능을 호출할 수 없음 default (=package-pri..

Java/문법 2024.03.08

[JAVA 중급 스터디 - 1회차] 기본형/참조형, Wrapper Class생성자, 패키지

자바 중요 문법 빠르게 반복하는 스터디를 진행하게 됐다!! 👩‍💻 너무 감사하게도 팀장님이 자료 공유 + 강의까지 해주신다구 하셔서 이제 내가 해야할 건 열심히 공부하는 것 뿐 👽 기본 개념 다지기 기본형과 참조형 기본형 - Primitive Type boolean, char, byte, short, int, long, float, double 기본형 변수로, 실제로 직접 사용할 수 있는 값이다. (실제 값이 저장됨) null값이 존재하지 않는다. 기본값이 정해져 있기 때문! primitive type 기본값 boolean false char '\u0000' byte 0 short 0 int 0 long 0L float 0.0F double 0.0 ❓ primitive type에 null값, 아예 불가능..

Java/문법 2024.03.08

[Java] 배열의 공통 원소 집합 구하기

어떤 배열에서 존재하는 원소들의 집합을 구하고 싶다. 즉, 중복을 제거하고 싶다. 예를 들어, [1, 3, 2, 1, 4, 5, 1, 4] 라는 배열을 {1, 2, 3, 4, 5}로 만들고 싶은 것이다. 그렇다면 자바에서 배열을 집합으로 변경할 수 있는 함수가 있을까? 없다. 배열을 List 객체로 변환해주어 HashSet의 생성자 파라미터로 넣어주면 된다. 그렇게 되면 Set 객체는 중복을 허용하지 않기 때문에 배열의 중복이 제거된다. import java.util.*; public class Main { public static void main(String[] args) { String[] arr = { "a", "b", "c", "a", "c" }; Set set = new HashSet(Arra..

Java/문법 2024.03.02

[백준] 25916번 - 싫은데요

https://www.acmicpc.net/problem/25916 25916번: 싫은데요 $6$번째 구멍부터 $8$번째 구멍까지 막으면 총 $9$의 부피를 소모하고, 최대값인 $9$를 출력한다 www.acmicpc.net 예제는 통과하는데 계속 틀렸다고 해서 며칠 동안 계속 삽질했다.. ㅠ.ㅠ 구글링 해도 원하는 알고리즘대로 푼 글이 없어서 답답했는데 같은 투포인터 유형의 다른 문제를 풀다가 해답을 찾았다! 아래 글대로 풀었더니 풀렸다.. 감사합니다😭 https://maivve.tistory.com/223 (JAVA) 백준 2003번 : 수들의 합2 --- [투포인터] https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1≤N≤10,000), M(..

[네트워크 용어 정리] 1. LAN과 WAN

💡 [그림으로 이해하는 네트워크 용어] 를 읽고 정리하였으므로, 해당 서적과 목차가 동일합니다. 1. LAN과 WAN 네트워크란? 네트워크란, 정보를 전송되는 경로를 의미한다. 경로가 무엇으로 만들어졌는지와 상관 없이, 정보가 전달된다면 네트워크라고 칭할 수 있다. 종이컵에 실을 연결하여 서로 대화하는 장면을 떠올려보자. 이때, 실을 통해 음성이 전달되므로 실 == 네트워크라고 이야기할 수 있다. LAN과 WAN 네트워크는 LAN과 WAN으로 구분지을 수 있다. LAN LAN은 Local Area Network로, 집이나 사무실 내부 등 비교적 좁은 공간에서 사용되는 네트워크이다. LAN의 목적은 네트워크의 목적과 동일하다고 볼 수 있다. LAN 또한 자원을 공유하는 것이 주목적이기 때문이다. LAN은 ..

네트워크 2024.02.08

[알고리즘] DFS (깊이 우선 탐색) 와 BFS (너비 우선 탐색), 그리고 Binary Search(이진 탐색)

💡 대부분의 내용을 Do it! 알고리즘 코딩테스트 with JAVA 강의를 참고하여 정리하였습니다. DFS (Depth - First Search) DFS (깊이 우선 탐색)은 그래프 완전 탐색 기법 중 하나이다. 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른쪽 분기로 이동하여 다시 탐색한다. (최대 깊이까지 탐색한 후 다음으로 넘어간다!) 특징 재귀함수로 구현한다. 이때, stack overflow에 유의해야 한다. 스택 자료구조를 이용한다. 시간 복잡도 O(V + E) O(노드 수 + 엣지 수) 핵심 이론 노드 방문 여부를 체크할 배열이 필요하다. 한 번 방문한 노드는 다시 방문하면 안 되기 때문이다. 중복 방문 불가!! 그래프(데이터를 담는 자료구..

Java/알고리즘 2024.01.30

[알고리즘] 구간 합

💡 대부분의 내용을 Do it! 알고리즘 코딩테스트 with JAVA 강의를 참고하여 정리하였습니다. 합 배열 구간 합 알고리즘을 활용하기 위해서는 먼저 합 배열을 구해야 한다. 배열 A가 있을 때, 배열 S를 합 배열이라고 하면, 다음과 같이 나타낼 수 있다. S[i] = A[0] + A[1] + A[2] ... + A[i-1] + A[i] 합 배열 공식은 다음과 같다. S[i] = S[i-1] + A[i] 구간 합 구간 합은 합 배열을 이용하여 시간복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘이다. 배열에서 특정 범위의 값들의 합을 구하고 싶을 때 합 배열을 이용하면 빠르게 구할 수 있다. i에서 j까지의 구간 합을 구할때, 공식은 다음과 같다. S[ j ] - S[ i-1 ]

Java/알고리즘 2024.01.29

[백준] 11659번 구간 합 구하기 4

https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net Solution 1. 문제에서 0번째 배열을 1번째 배열이라고 지칭하고 있다. 따라서, 0번째 배열을 비워두고 1번째 부터 값을 채워나가면 로직이 더 간편해진다. 예제를 대입하여 그림으로 이해하는 것이 빠르다. import java.io.*; import java.util.*; public class Main { public static void main(String[] a..

[Java 문법] Scanner보다 빠른 BufferedReader, StringTokenizer

BufferedReader는 Java.io에 속하는 입력 클래스로, Scanner에 비해 처리 속도가 빠르다. 때에 따라 2배 이상 차이 나는 경우도 있다. 알고리즘 문제를 풀 때 유용할 것!! Scanner Scanner sc = new Scanner(System.in); String str = sc.next(); // 문자열 입력받기 int i = sc.nextInt(); // 정수 입력받기 long l = sc.nextLong(); // long타입 입력받기 BufferedReader BufferedReader br = new BufferedReader(new InputStreamReader(Syste.in)); String s = br.readLine();// 문자열 입력받기 int i = Int..

Java/문법 2024.01.29

[알고리즘] 배열과 리스트

💡 대부분의 내용을 Do it! 알고리즘 코딩테스트 with JAVA 강의를 참고하여 정리하였습니다. 배열 배열은 연속 공간에 값이 채워져 있는 형태의 자료구조이다. 배열의 특징 인덱스를 사용하여 값에 바로 접근이 가능하다. 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어렵다. (연속 공간에 값이 채워져 있는 형태이기 때문) 삽입 및 삭제를 원하는 인덱스 주변에 있는 값을 이동시켜야 한다. 배열의 크기는 선언 할 때 지정해야 하고, 한번 선언하면 크기를 늘리거나 줄일 수 없다. 리스트 리스트는 값과 포인터를 묶은 노드를 포인터로 연결한 자료구조이다. 리스트의 특징 인덱스가 없다. 따라서 값에 접근하려면 Head 포인터부터 순서대로 접근해야 한다. → 값에 접근하는 속도가 느리다. 포인터로 연..

Java/알고리즘 2024.01.29