자바에서 클래스를 테스트하는 방법은 무엇일까? 예를 들어 MyClass
라는 클래스를 테스트하고 싶다면, 통상적으로 MyClassTest
라는 테스트 전용 클래스를 만든 다음, 그 안에서 MyClass
의 인스턴스를 생성해서 테스트 로직을 구현한다. 하지만 만약 MyClass
가 추상 클래스 (abstract class)라면? 이 경우엔 MyClass
의 인스턴스를 생성할 수 없기 때문에 기존 방법을 사용할 수 없게 된다.
-
posts
- Python 코딩테스트 Ruby Jekyll Github Java
-
-
자바 추상클래스 테스트하기
-
Jekyll의 Liquid
Jekyll은 그냥 써도 충분히 괜찮은 블로그이다. 하지만 디자인에 욕심이 많은 사람이라거나 개발자로서의 자존심이 센 사람이라면 자신의 블로그를 원하는대로 바꿔보고 싶을 것이다. 그런 생각으로 Jekyll을 이곳저곳 건드려 보면 결국엔 템플릿 레이아웃을 건드려야 한다는 결론에 도달하게 된다. 그리고 그러려면 Liquid에 대해 알아야 한다.
...(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)