본문 바로가기

분류 전체보기59

알고리즘 문제는 Stream을 사용해서 풀면 안되는 걸까? 알고리즘에 대한 감을 잃지 않기 위해 문제를 꾸준히 풀어가는 중이다. 기존에는 레거시 자바문법을 이용해서 풀어냈다면, 요즘은 모던 자바의 기능들을 활용해서 문제를 풀어나가고 있다. 그 중 가장 많이 사용하는 기법은 Stream을 이용하는 것인데, 이게 참 문제가 많은 것 같다... 백준의 2580 스도쿠 문제를 보자 www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 스도쿠 해답을 찾는 간단한 문제이다. 이전에 풀어본 경험이 있는데 소스가 많이 더러워서 깔끔하게.. 2021. 2. 17.
[회고] SOLID 스터디 우테코를 시작하고 SOLID에 대한 스터디를 개최해 봤다. 스터디를 개최한 경위는 다음과 같다. 프리코스를 하면서 객체지향에 대해서 어느정도 공부를 했다고 느꼈지만, 막상 SOLID의 의미를 물어보니 대답하기가 참 난감했다. 분명 알고 있던건데 왜 대답을 못하는 걸까... 사실 답을 알고있다 설명할 수 없다면, 모르는 거다. 그렇다. 나는 모르기 때문에 답을 못한거다. 그래서 스터디를 만들고, 우테코 크루원들과 이야기를 나누어 보기로 마음을 먹었다. (웨지의 저 한마디가 스터디를 추진하는데 큰 도움을 줬다.) 스터디를 진행하는데 있어서, 기존의 스터디 방식처럼 누군가 주제를 공부해 오고, 단순 발표하는 진부한 형식의 스터디는 지양하고 싶었다. 우테코 슬랙의 질문 채널을 보면 여러 질문이 올라오고 그에 대.. 2021. 2. 15.
확장성은 어디까지 고려해야 할까? 우테코에서 자동차 경주 미션을 하며 소스에 대한 피드백을 많이 받았다. 그중에는 리뷰어님과 참 오랜 시간동안 의견을 나눈 부분도 있는데, 바로 확장성에 대한 부분이다. 기존에 나는 모든 부분에서 확장성을 고려하서 설계하고, 구현했다. 이번 자동차 경주 미션을 보자. 자동차 경주 미션에서 자동차의 움직임 조건은, 랜덤으로 숫자를 하나 생성하고 그 수가 4 상이면 전진, 아니면 stop인 요구사항을 가지고 있다. 그래서 나는 아래와 같이 코드를 작성했다. public interface MoveCondition { boolean isMovable(); } public class RandomMoveCondition implements MoveCondition { ... private final RandomUti.. 2021. 2. 10.
랜덤에 대한 테스트는 어떻게 이루어 져야 하는가? 테스트 코드를 작성하다 보면, 랜덤하게 발생하는 경우에 대하여 테스트를 진행할 경우가 생긴다. 이러한 상황에 봉착했을 때 우리는 어떻게 테스트 하는게 좋을까?? 우아한 테크 코스(이하 우테코)에서 1단계 미션을 진행하면서 랜덤을 테스트 할 경우가 생겼다 아래의 코드를 보자. public class Car { private static final int MAX_BOUND = 9; private static final int MOVABLE_THRESHOLD = 4; private final String name; private int position; public Car(String name, int position) { this.name = name; this.position = position; } pu.. 2021. 2. 8.