본문 바로가기

Programming

(66)
[바킹독: 알고리즘] 기초 코드 작성 요령 1 - (1) ※ (링크) 바킹독 유튜브 영상을 통해 학습한 내용을 정리한 것입니다. 본인은 JAVA를 활용해 학습하였습니다. 비상업적 목적임을 다시 알려드리며, 출처는 아래 링크와 같습니다. [실전 알고리즘] 0x01강 - 기초 코드 작성 요령 I 안녕하세요, 바킹독입니다. 이번 단원에서는 기초 코드 작성 요령을 익혀보려고 합니다. 목차를 보셨으면 알겠지만 기초 코드 작성 요령이 두 강으로 나눠져있는데 앞으로 코드를 잘 짜기 위해 blog.encrypted.gg 출처: blog.encrypted.gg/922?category=773649 시간/공간 복잡도 컴퓨터는 1초당 3 - 5억 번의 연산을 수행합니다. ( 더하기, 나누기 등의 연산도 고려하자면 추정치라 생각하자.) 만약 주어진 문제의 제한시간이 1초라면, 3 -..
[바킹독: 알고리즘] 오리엔테이션 ※ (링크) 바킹독 유튜브 영상을 통해 학습한 내용을 정리한 것입니다. 본인은 JAVA를 활용해 학습하였습니다. 비상업적 목적이며, 개인 복습을 위해 업로드한 글임을 다시 한 번 더 이야기드립니다. [실전 알고리즘] 0x00강 - 오리엔테이션 안녕하세요, 바킹독입니다. 리뉴얼을 완료해서 다시 강의를 올립니다. 혹시 코딩테스트를 대비하고자 하는 목적으로 검색하다가 이 강좌를 보게 된거라면 지금 이 강좌가 정말 큰 도움이 된다 blog.encrypted.gg 출처: blog.encrypted.gg/921?category=773649 [ 0x11강 ] 까지는 반드시 완벽하게 숙지하기 위해 노력할 것 각 강의당 관련 문제 3 ~ 5개는 풀어 볼 것 한 개의 테스트 케이스를 빼고 다른 테스트 케이스를 통과했다? ..
자바, this 키워드 this는 객체가 자기 자신을 지칭할 때 사용하는 키워드이다. this 키워드가 없고, 동일한 이름의 변수명이 있을 경우 지역 변수가 우선 순위에 존재한다. 하지만 this 키워드를 사용하여 객체 변수에 저장되어 있는 값을 이용할 수 있게 된다. T 메모리 구조상에서 본다면, 지역 변수는 메서드의 Stack Frame에 존재하지만, 객체 변수에 저장되어 있는 값은 객체가 생성되며 Heap 영역에 존재한다. 정리하겠다. 지역 변수와 속성(객체 변수, 정적 변수)의 이름이 동일한 경우 지역 변수가 우선순위를 갖는다. 객체 변수와 이름이 같은 지역 변수가 있을 경우, 객체 변수를 사용하려면 this를 접두사로 사용한다. 정적 변수와 이름이 같은 지역 변수가 있을 경우, 정적 변수를 사용하려면 클래스명을 접두사..
자바, interface 키워드와 implements 키워드 interface는 public 추상 메서드와 public 정적 상수만 가질 수 있다. 분명 인터페이스는 public 추상 메서드와 public 정적 상수만 가질 수 있다고 했다. 그런데 위 코드를 보면 그 어떠한 것도 명시되어 있지 않다. 하지만 에러는 발생하지 않는다. 그 이유는 인터페이스의 메서드에 public과 abstract, 속성에 public과 static, final을 붙이지 않아도 자동으로 자바가 붙여준다.
자바, instanceof 연산자 인스턴스(instance)는 클래스를 통해 만들어진 객체이다. instanceof 연산자는 객체가 만들어진 특정 클래스의 인스턴스인지 확인하는 연산자이다. 객체_참조_변수 instanceof 클래스명 instanceof는 객체 참조 변수의 타입이 아닌 실제 객체 타입에 의해 처리한다. 고로 아래와 같이 코드를 변경하여도 결과는 동일하다. 중요한 사실이 있다. instanceof는 LSP을 위반하는 코드에서 주로 나타나는 연산자이기에 리팩터링 대상이 아닌지 점검해봐야 한다. 리스코프 치환 원칙(LSP) 베이스 클래스가 서브 클래스로 치환 되어도 동일한 동작을 보장해야 한다는 원칙
자바, final 키워드 final 키워드 등장 가능한 곳: 클래스, 변수, 메서드 final 클래스 위와 같이 class 앞에 final이 붙는 키워드로, 상속을 허락하지 않는다는 의미이다. 만약 다른 클래스에서 상속을 받는다면 에러가 발생한다. final 변수 final 변수는 변경 불가능한 상수가 된다. 정적 상수 ( s_var1, s_var2 ) : 선언과 동시에 또는 static 블록 내부에서 초기화 가능 객체 상수 ( var1, var2 ) : 선언과 동시에 또는 객체 생성자 혹은 인스턴스 블록에서 초기화 가능 지역 상수 ( l_var1, l_var2 ) : 선언과 동시에 또는 최초로 한 번만 초기화 가능 final 메서드 오버라이딩. 즉, 재정의가 금지된다.
자바의 static 블록 클래스 생성 시의 실행 블록, static 블록 클래스가 T메모리 영역 중 스태틱 영역에 배치될 때 실행되는 코드 블록이 있다. 바로 static 블록이다. 이전에 포스팅을 하였는지 기억이 가물가물하나, static 키워드가 붙은 정적 함수, 정적 메서드는 스태틱 영역에 할당된다. 이로 모든 메서드에서 접근할 수 있다. 예제 코드를 한 번 보겠다. 가장 큰 차이점은 이전 포스팅에서 객체 생성자 메서드로 선언했다면, 이번에는 static이라는 예약어 뒤에 바로 구현했다는 것이다. 해당 클래스의 객체 생성자 메서드로 인스턴스를 생성한 뒤 main 메서드에서 실행하면 [ 동물 클래스 ]가 Console 창에 출력됨을 확인할 수 있다. ( 편의상 main method 코드는 run 메서드에 작성하고 있습니다. ..
자바의 생성자(Constructor) : new 생성자 클래스의 인스턴스. 즉, 객체를 생성할 때마다 new 키워드를 사용한다. Animal animal = new Animal( ); 이렇게 말이다. ' new 클래스명( ) '을 자세히 살펴보면 열고 닫는 소괄호가 존재한다. 이는 한 마디로 ' 클래스명( ) ' 또한 메서드임을 이야기한다. 객체 생성자 메서드 : 반환값이 없고 클래스명과 동일한 이름의 메서드로 객체를 생성하는 메서드임 객체 생성자 메서드의 경우 매개인자가 아무것도 없는 default 생성자를 자바에서 자동으로 생성한다. 하지만, 만약 인자 값을 요하는 생성자 메서드를 선언할 경우, default 생성자는 따로 명시해야 선언된다. 위 예시 코드를 보면, Animal 클래스 내에는 아무것도 선언되어 있지 않지만 Driver 클래스에서 객..