int groupNo(int i) {
return (i + 1) / 2;
}
int solution(int N, int a, int b) {
if (Math.abs(groupNo(a) - groupNo(b)) == 0) {
return 1;
}
if (Math.abs(groupNo(a) - groupNo(b)) == 1) {
return 2;
}
if (Math.abs(groupNo(a) - groupNo(b)) == 2) {
return 3;
}
return -1;
}
아침 부터 TIL 쓰기 1일차 성공. 와... 축하해..
TDD 수련 아주 조금 진행. 오... 잘했네...
자신에 대한 확신과 더불에 도구나 방법론에 대해 의심하는 태도를 실천함. 도구에 대한 지나친 확신보다 훨씬 더 해로운 것은 자신에 대한 의심인 것 같다는 생각이 들었음. 후자로 부터 전자가 도출되는 것 같은 느낌도 듦.
세탁기가 없어서 밤에 빨래하러감. 주말에 게으름 피운자의 최후.
힘들어도 할 건 전부다 하기. 습관이 될때까지는 버티는게 답..인가? 답인듯?
대체 뭐가 문제야 중에서.
문제란 인식하는것과 바라는 것의 차이다.
- 인식 - 집이 너무 춥다.
- 바람 - 따뜻한 집
그러나 온도 조절기를 보니 온도가 보통 사람이라면 꽤 따뜻하다고 느낄 수 있는 25도 라고 해보자.
..
이 경우 따뜻함의 문제를 허상의 문제로 간주할 수 있을 것이다.
...
그러나 착각하지 마라. 허상의 문제들이 진짜 문제다.
...
25도와 너무 춥다는 느낌에 대해 '몸이 아프다' 고 결론 내릴지도 모른다. 침대로 가거나, 약을 먹거나, 물을 마시거나, 혹은 모두 다 하거나, 주치의와 진료시간을 잡을 수도 있다.
테스트주도개발로 배우는 객체 지향 설계와 실천
위대하고 성장 가능한 시스템을 만들 때의 핵심은 모듈 간의 의사소통에 있지, 모듈의 내부 특성이나 작동 방식에 있지 않다.
쓰는 쪽 부터 만드세요.
시스템을 이런식으로 구축하면 방법이 아니라 목적에 집중할 수 있어, 시스템의 행위를 변경하기가 더 쉽다.
테스트주도개발로 배우는 객체 지향 설계와 실천
이따금 우리는 키보드에서 한 걸음 물러나 워프 브록과 맥킨이 설명해준 CRC카드 라는 비공식적인 설계 기법을 이용할 때가 있다. 이 기법은 원시적인 인덱스 카드를 이용해 애플리케이션의 잠재적인 객체 구조나 그중 일부를 살펴보는 것이다. 인덱스 카드를 이용하면 세부사항에 막히거나 초기에 발견한 해법에만 몰두하지 않고도 구조를 실험해볼 수 있다.
예시. 게임 엔진
토비의 스프링
하지만 클래스 사이에 관계가 만들어진 것은 아니고, 단지 오브젝트 사이에 다이내믹한 관계가 만들어지는 것이다. 이 차이를 잘 구분할 수 있어야 한다. 클래스 사이의 관계는 코드에 다른 클래스 이름이 나타나기 때문에 만들어지는 것이다. 하지만 오브젝트 사이의 관계는 그렇지 않다. 코드에서는 특정 클래스를 전혀 알지 못하더라도 해당 클래스가 구현한 인터했다면, 그 클래스의 오브젝트를 인터페이스 타입으로 받아서 사용할 수 있다. 바로 객체지향 프로그램에는 다형성이라는 특징이 있는 덕분이다.
나는 자신을 믿는 사람이다.