평소에 알고리즘 풀 때, BFS로만 풀어서 DFS로도 좀 풀어볼까 하다가 예제는 맞는데 자꾸 런타임 에러로 틀려서 검색하면서 찾아보다가 '# dfs 반복 횟수 제한 해제' 라고 주석처리 되어있는게 있길래 한번 넣어봤더니 통과했다. 찾아보니까 파이썬에서는 재귀를 사용할 때 최대 깊이가 기본 1,000회로 설정되어 있다고 한다. 그래서 아래 코드를 사용하면 이 설정이 늘어나게 되는 것. import sys sys.setrecursionlimit(10 ** 9) 이런 식으로 코드를 작성하면 최대 깊이가 10**9로 바뀌게 된다. input은 sys.stdin.readline bfs는 from collections import deque dfs는 sys.setrecursionlimit(10 ** 9) 이런 수준..
super super는 부모 클래스로부터 상속받은 필드나 메서드를 자식 클래스에서 참조하는데 사용하는 변수다. 조금 정리해서 말하자면 자신이 상속받은 부모를 가리키는 참조 변수인 것 this의 경우 필드, 매개변수명이 동일해서 구분하기 위해 사용했다. super는 부모 클래스의 멤버와 자식 클래스의 멤버 명이 같을 경우 사용하여 구별할 수 있다. 이런 식으로 super 참조 변수는 부모 클래스의 멤버에 접근할 수 있게 된다. 아래 예제를 주석과 함께 살펴보자 class Parent { int a = 10; } // Parent 클래스에서 a = 10 선언 class Child extends Parent { // Child 클래스에서 Parent 클래스 상속 -> a = 10을 가져옴 int a = 20;..
this와 this() 자바에서 this는 객체 자기 자신(참조값)을 가리키는 레퍼런스 변수이며, 자신의 객체에 접근하기 위해 사용한다. 주로 필드와 매개변수 명이 동일할 때, 명확한 구분을 위해 사용한다. this() 같은 경우는 같은 클래스 내 생성자가 다른 생성자를 호출할 때 사용한다. 생성자는 매개변수를 다양하게 받아올 수 있는데(오버로딩), this()를 이용하면 중복 코드를 간단하게 할 수 있다. 주의할 점으론 생성자에서만 사용이 가능하며, 반드시 호출하는 곳의 첫 번째 문장에 작성해야 한다. 아래의 Member 클래스 예제를 살펴보자 public class Member { private int id; private String username; private int age; public Me..
앞서 final 키워드에 대한 포스팅을 올렸는데, static과 같이 사용하면 내용이 길어져서 따로 정리하려고 한다. 우선 static의 경우 객체 생성 없이 사용할 수 있는 필드, 메서드를 생성하고자 할 때 사용된다. static으로 선언될 경우 GC가 관여하지 않는 static 메모리 영역에 적재되어 모든 객체가 공유한다. 물론 너무 남발하면 메모리 할당된 채로 남아있어 좋지는 않다. 특징을 간단하게 요약하자면 아래와 같다. 프로그램이 시작할 때 단 한 번만 생성되고 초기화된다. 인스턴스를 생성하지 않고 바로 사용 가능 해당 클래스의 모든 인스턴스 공유 static과 final 일단 제일 큰 특징은 static과 final를 이용하여 상수 정의에 사용한다. public static final doub..