분류 전체보기 23

[Java] 상속(Inheritance)

상속 자바에서 상속이란 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 기법이다. 두 가지의 클래스를 상위 클래스와 하위 클래스로 나누어 상위 클래스의 멤버(필드, 메서드, 이너 클래스)를 하위 클래스에서 공유할 수 있으며 두 클래스를 상속 관계에 있다고 한다. 하위 클래스는 상위 클래스로부터 확장된 개념이기 때문에 하위 클래스의 멤버 개수는 상위 클래스보다 항상 많거나 같다. 클래스를 상속할 때는 extends 키워드를 사용하며, extends 으로 정의한다. 상속을 사용하면 상위 클래스와 중복되는 코드를 줄일 수 있다는 이점을 갖는다. 자바에서는 단일 상속만을 허용하며 인터페이스(interface)라는 문법 요소를 통해 다중 상속과 비슷한 기능을 구현할 수 있다. 포함 관계 포함 관계는 상속처럼 ..

📙 Java 2022.09.06

[Java] 생성자와 내부 클래스

생성자 new 키워드를 통해 인스턴스가 생성될 때 호출되는 인스턴스 변수 초기화 메서드이다. 생성자는 메서드와 비슷한 구조를 갖고 있지만 클래스의 이름과 같은 이름을 사용한다는 점과 반환 타입이 없다는 점에서 메서드와는 큰 차이를 갖는다. this와 this() this() 메서드는 자신이 속한 클래스에서 다른 생성자를 호출할 때 사용된다. 반드시 생성자 내부에서만 사용할 수 있으며 첫 번째 줄에 위치해야 한다. public class Test { public static void main(String[] args) { Hello hello = new Hello(); Hello hello2 = new Hello(10); } } class Hello { public Hello() { System.out.p..

📙 Java 2022.09.05

[Java] 필드와 메서드 오버로딩

클래스의 구성 요소 클래스는 필드(field), 메서드(method), 생성자(constructor), 이너 클래스(inner class)로 구성된다. 구성 요소 중 생성자를 제외한 필드, 메서드, 이너 클래스는 클래스의 멤버(member)라고 부른다. 필드 자바에서 변수는 클래스 변수, 인스턴스 변수, 지역 변수로 나뉜다. 이 중에서 필드라고 불리는 것은 클래스 변수와 인스턴스 변수이다. 필드는 클래스에 포함된 변수를 의미하며 객체의 속성을 정의할 때 사용된다. 필드 변수는 힙 메모리에 저장되며 힙에는 빈 공간이 저장될 수 없기 때문에 강제로 초기화된다. 객체가 소멸하지 않는 한 필드 변수는 삭제되지 않는다. 1. 클래스 변수 (cv, class variable) static 키워드와 함께 선언되며 모..

📙 Java 2022.09.02

[Linux] CLI 명령어

CLI란? CLI는 명령줄 인터페이스라는 뜻으로 명령어로 컴퓨터를 제어하는 방식을 말한다. GUI(그래픽 사용자 인터페이스)는 친숙한 인터페이스를 갖고 있고 사용자가 쉽게 컴퓨터를 제어할 수 있지만 그래픽에 컴퓨터 자원을 많이 사용하며 느리다는 단점을 갖고 있다. 따라서 프로그래밍을 하려면 높은 안정성과 빠른 속도를 가진 CLI에 익숙해져야 한다. CLI 기본 명령어 pwd : 현재 위치 확인하기 현재 위치한 경로를 확인할 수 있다. mkdir : 새로운 폴더 생성하기 make directories의 약자로 폴더를 생성한다. 폴더 이름과 함께 입력해야 하며 공백으로 구분하여 입력한다. 만약 폴더/파일의 이름에 공백이 있으면 \를 사용한다. mkdir linux-study ls : 특정 경로에 포함된 파일..

Linux 2022.08.26

[React] redux 정리

redux는 자바스크립트 상태 관리 라이브러리로 리액트에서 가장 많이 사용된다. useState를 사용하여 상태를 관리할 경우 루트 컴포넌트에서 종속 컴포넌트로 props를 전달하게 된다. 이 방식은 컴포넌트의 구조가 간단하다면 문제가 발생하지 않는다. 하지만 프로젝트의 규모가 커지거나 복잡해져서 그 하위의 하위의 하위 컴포넌트로 state를 전달해야 한다면, props를 계속 내려줘야 하고 전달받은 props가 어느 컴포넌트에서 온 것인지 알기 힘들어진다. 심지어 해당 state가 필요 없는 컴포넌트에서도 하위 컴포넌트로 전달해주기 위해 props를 받는 상황이 발생할 수도 있다. 이러한 종속성을 탈피하기 위해 프로젝트 루트레벨에서 state를 관리해주는 것이 리덕스이다. store에 state를 저장..

💻 Web 2022.08.11

[프로그래머스] 게임 맵 최단거리 (with Python)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 최단거리 유형의 문제임을 확인하고 BFS를 이용하면 효과적으로 해결할 수 있다고 생각해서 BFS 알고리즘을 이용하여 문제를 풀었다. 최단거리를 구하려면 방문했던 곳은 다시 확인할 필요가 없기 때문에 visited를 선언해주고, visited가 False일 때에만 queue에 넣어줬다. maps는 이전까지의 최단거리에 1을 더해주면서 갱신했고 최종적으로 n*m 크기의 맵에서 maps[n-1..

💡 Algorithm 2022.08.04

[SpringBoot] JpaRepository 생성과 데이터 조회하기🔍

JpaRepository 생성하기 Repository란? entity에 의해 생성된 db테이블에 접근하는 함수(ex: findAll, save 등)들을 사용하기 위한 인터페이스이다. CRUD를 어떻게 처리할지 정의하는 계층이다. PlaceRepository 인터페이스를 생성하는 코드는 다음과 같다. package com.goingto.back; import org.springframework.data.jpa.repository.JpaRepository; public interface PlaceRepository extends JpaRepository{ } 리포지터리로 만들기 위해 JpaRepository 인터페이스를 상속했다. 상속할 때는 제네릭스 타입으로 엔티티의 타입과 해당 엔티티의 PK 속성 타입을..

💻 Web 2022.08.01

[SpringBoot] H2 데이터베이스 사용 방법 (+오류 해결)

H2 데이터베이스 자바로 작성된 파일 기반의 RDBMS이다. 작은 크기와 빠른 속도를 특징으로 하며 주로 개발용이나 소규모 프로젝트에서 사용된다. 실제 운영시스템은 좀 더 굵직한 Oracle, MSSQL 등의 DB를 사용하는 것이 일반적인 개발 패턴이다. 사용방법 build.gradle 파일의 dependencies에 runtimeOnly 'com.h2database:h2' 를 추가해준다. src/main/resources/application.properties 파일을 다음과 같이 수정해준다. #DATABASE spring.h2.console.enabled=true spring.h2.console.path=/h2-console spring.datasource.url=jdbc:h2:~/local spri..

💻 Web 2022.07.28

[그래프 탐색] DFS, BFS 정리 (with C++)

DFS(Depth-First Search) : 깊이 우선 탐색 특징 모든 노드를 방문 재귀함수 or 스택으로 구현 동작 과정 1. 시작 노드 스택에 삽입하고 visited = true 처리 2. 스택 최상단 노드에 인접한 노드 중 아직 visited X 노드가 있다? 있다) visited X 노드를 스택에 넣고 visited = true 처리 없다) 스택 최상단 노드 꺼냄 3. 2번 수행할 수 없을 때까지 반복 언제 사용해야 할까? 모든 노드를 다 탐색해야 하는 경우 경로의 특징, 지나온 노드에 대한 정보가 필요한 경우 소스코드 #include #include using namespace std; bool visited[9]; vector graph[9]; void dfs(int x) { visited[..

💡 Algorithm 2022.07.18