월말평가, 알고리즘 

어제 월말 평가를 처음 진행하며, 1번부터 4번까지는 단순 구현 문제였지만 5번같은 경우는 알고리즘 문제로 나왔다. 카톡방에서 의견교류를 한 결과 이게 백준 2615번 문제 "오목" 이라는걸 알았는데... 역시 내가 급하게 풀었던 답은 다수의 문제가 있었다. 우선, 육목은 승리조건이 아니다. 해당 조건을 고려 하지 않아서 6시 종례 이후 해당 조건을 고려한 리팩토링을 해봤으나 백준 채점 결과 틀린걸로 나왔다. 
(별개로 백준을 처음 이용해 봤는데, 모든 클래스를 Main 으로 설정하는것이나, 기본 형식이 제공 되지 않는 것, 복사 붙여넣기가 자유로운것이 프로그래머스와 많이 다른 모습을 보인것 같다.) 

Git contributions

또 어제 알게된 것은 깃허브 잔디 심는것에 대한 설정인데, 이번에 매일 숙제가 제공되어서 이것을 내 깃에도 올리며 꾸준히 커밋푸쉬를 진행하려고 노력중이다. 저번 주 내내 했으나 어제 확인 시에 그냥 회색으로 있는걸 확인했는데, 이게 나의 로컬 깃에 저장된 user.email이 깃 email과 일치하지 않아서 발생하는 문제였다. 깃 브랜치 관리를 위해 설치한 깃배쉬를 통해 해당 config를 확인하고, 수정해서 이제 푸르른 잔디를 관리할 준비는 끝났다고 볼 수 있다. 

싱글톤 패턴

마지막으로 오늘 오전에 배운 내용이 인터페이스를 이용한 싱글톤 객체 생성 부분인데 그간 상당히 깊은 생각없이 사용해 왔다. 와중 실습 문제중에 6번 간단한 구현을 해결하려 하는데 너무 어려운 것이었다.

private static한 생성자, public한 호출

가장 핵심인 한문장이라고 봤고, 나도 그렇게 생각한다. 객체를 단한개만 만들어서 해당 생성에 대한 부분은 숨겨두지만, 사용하기 위해 public 하게 호출이 가능하게 만든다. 이게 메모리적으로 어떤 이점이 있는 지에 대해서도 더 확고하게 배운 것 같다.


위와 같은 방법으로 싱글톤 객체를 생성해주고


getInstance() 메서드를 통해 해당 객체를 불러와서 사용해준다. 이는 interface를 사용한 객체 생성에서도 똑같이 적용되기 때문에 방법을 아는 것이 중요.

Bigdecimal

지난번 유니메오에서 보증금/환급금 관련 기능을 제작할 때 알게된 객체이다. double이나 int 보다 훨씬 정확한 수계산이 가능하게 해주며 보통 돈계산에 쓰인다고 한다. 이번에 객체 생성에서 간단하게 사용했었는데 이 때 배운점이 두가지 있다. 

new Bigdecimal( 여기는 String 으로 감싸주는 것이 더 정확하다. )
초기화 시 int로만 했었는데 이렇게 감싸주라고 한다. 

Bigdecimal은 불변형 객체다. 보통 enum이나 Bigdecimal이 쓰이는 이유 중 하나인것 같다. 안전성이 보장된다는 건데, 이로 인해서 반복문으로 합계를 구하는 식을 사용한다면 매번 새로운 주소로 나오는 것, 마치 String 과 같은 원리 인거 같은데, bulid 기능이 있는 Bigdecimal은 안나오려나 ...



 


댓글

이 블로그의 인기 게시물

git-receive-pack not permitted on 깃 허브 로그인 관련 문제