자바에서 클래스를 테스트하는 방법은 무엇일까? 예를 들어 MyClass라는 클래스를 테스트하고 싶다면, 통상적으로 MyClassTest라는 테스트 전용 클래스를 만든 다음, 그 안에서 MyClass의 인스턴스를 생성해서 테스트 로직을 구현한다. 하지만 만약 MyClass가 추상 클래스 (abstract class)라면? 이 경우엔 MyClass의 인스턴스를 생성할 수 없기 때문에 기존 방법을 사용할 수 없게 된다.
-
posts
- Python 코딩테스트 Ruby Jekyll Github Java
-
-
자바 추상클래스 테스트하기
-
Jekyll의 Liquid
Jekyll은 그냥 써도 충분히 괜찮은 블로그이다. 하지만 디자인에 욕심이 많은 사람이라거나 개발자로서의 자존심이 센 사람이라면 자신의 블로그를 원하는대로 바꿔보고 싶을 것이다. 그런 생각으로 Jekyll을 이곳저곳 건드려 보면 결국엔 템플릿 레이아웃을 건드려야 한다는 결론에 도달하게 된다. 그리고 그러려면 Liquid에 대해 알아야 한다.
...(more) -
[파이썬 코딩테스트 팁] 문자열 조작
다음과 같은 문제가 있다고 해보자.
...(more)길이가 같은 두 문자열
s1,s2가 주어졌을 때, 다음 조건을 만족하는 문자열s를 리턴하라.s의 길이는s1,s2와 같다.- 0 <=
i< N인 모든i에 대해 (N은s1의 길이)s1[i] >= s2[i]일 경우s[i] = s1[i]- 그 외의 경우
s[i] = s2[i]
-
[파이썬 코딩테스트 팁] Swap
파이썬에는 C++처럼 두 변수의 값을 바꾸는 함수가 따로 없다. 다만 다음과 같이 튜플을 이용해 두 변수의 값을 바꿀 수 있다.
a = 1; b = 2 (a, b) = (b, a) # a = 2, b = 1세 개 이상의 변수도 다음과 같이 swap할 수 있다.
a = 1; b = 2; c = 3 (a, b, c) = (b, c, a) # a = 2, b = 3, c = 1리스트 안에 있는 원소들끼리도 자리를 바꿀 수 있다.
new_list = [3, 8] (new_list[0], new_list[1]) = (new_list[1], new_list[0]) # new_list = [8, 3]이를 다음과 같이 함수로도 만들 수 있다.
def swap(lst: list, i: int, j: int) -> None: """ 리스트 lst의 i번째 원소와 j번째 원소를 swap한다. """ (lst[i], lst[j]) = (lst[j], lst[i])이렇게 만든 함수는 퀵소트 등을 구현할 때 유용하게 쓸 수 있다.
...(more) -
Github Pages와 jekyll, 로컬 환경 이슈
깃헙에서 개인 페이지를 호스팅할 수 있도록 해주는 서비스를 Github Pages라고 한다. Github Pages는 jekyll을 지원한다. 이것이 무슨 말인고 하면, 우리가 깃헙 저장소에 jekyll 파일 구조를 따르는 소스 코드를 push하면 깃헙이 그걸 인식하고 자체적으로
...(more)jekyll build를 실행해서 페이지를 배포한다는 뜻이다. 덕분에 우리는 따로 서버를 가지고 있지 않아도 깃헙을 통해 커스터마이즈 가능한 블로그를 만들고 배포할 수 있다. -
Jekyll 소개
예전부터 블로그를 해보고 싶었다. 취준이 끝난 후 여유가 생겨서 블로그를 시작했다. 여러 옵션 중 나는 깃헙을 선택했다. 이유는 단 하나, 개발자 간지가 나기 때문이다. 조금 찾아보니 깃헙에서는 jekyll이라는 것을 사용해 블로그를 빌드한다고 한다. 사용법도 간단하고 다른 유저들이 만들어놓은 커스텀 테마도 많다고 한다. 오 그럼 금방 만들겠네? Oh my zsh처럼 깔으라는 거 깔고 설정 한줄만 바꿔주면 테마 적용되는 거겠지? 하고 생각했다. 그리고 구글링을 해서 찾은 블로그에서 하라는 대로 따라하기 시작했다.
...(more) -
[파이썬 코딩테스트 팁] sys.setrecursionlimit
import sys sys.setrecursionlimit(10 ** 6)만약 재귀를 사용해서 풀어야 하는 문제라면, 위 코드를 상단에 쓰는 것은 선택이 아닌 필수이다. 파이썬의 기본 재귀 깊이 제한은 1000으로 매우 얕은 편이다. 따라서 재귀로 문제를 풀 경우 드물지 않게 이 제한에 걸리게 되는데, 문제는 코딩테스트 환경에서는 에러 메시지를 볼 수 없다는 것이다. 이 함정에 걸린 사람은 원인 미상의 런타임 에러를 붙잡고 몇십 분을 각종 테스트케이스를 넣어가며 씨름하겠지만, 그런다고 문제가 잡힐 리 없다. 결국에는 문제를 풀지 못한 채 제출하게 되고 내가 뭘 잘못했지 하는 끝없는 자괴감에 빠지게 되는 것이다.
...(more) -
[파이썬 코딩테스트 팁] List Comprehension
다음과 같이 리스트 내에서 반복문을 이용해 리스트를 생성하는 것을 list comprehension이라고 한다.
l = [i for i in range(10)] # l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]위 코드는 가장 단순한 list comprehension의 예시이며, 다음과 같이 조건문을 넣을 수도 있다.
l2 = [i for i in l if i % 2] # l2 = [1, 3, 5, 7, 9]List comprehension을 이용하면 초기값이 있는 리스트를 간결하게 생성할 수 있으며, 리스트 외부에서 반복문을 사용하는 것보다 빠르기 때문에 실제 프로젝트에서도 자주 사용되는 문법이다.
...(more)