programmers 완주하지 못한 선수 문제 자체는 크게 어렵지 않았습니다. 하지만 효율성 테스트도 있기 때문에 출제자의 의도에 맞게 푸는게 관건일 것 같네요. 이를 고려하면 HashMap을 이용하여 풀 수 있는데요. 간략하게 정리해볼게요. HashMap에 주어진 참가자를 차례대로 넣는다. 그리고 동명이인의 경우 value값을 증가한다. HashMap에서 완주한 사람을 찾아 value값을 감소한다. 이 때 value값이 0이면 remove()하여 없앤다 HashMap 에 마지막에 남은 1명을 출력한다. 이 방법대로 풀면 다음과 같이 구현할 수 있습니다. class Solution { public String solution(String[] participant, String[] completion) {..
Today's Dev Notes(2018-10-28) 안녕하세요, Brad입니다. 오늘은 '로또' 미션 step3를 짧게 진행해봤는데요. 비록 짧은 시간이긴 하였지만 배우고 느낀 것들을 정리해보도록 하겠습니다. step3에서의 요구사항들은 다음과 같습니다. 산 로또 개수(제거) 수동으로 살 로또 개수 입력(추가) 수동으로 구매할 로또 번호들 입력(추가) 수동, 자동으로 살 로또 개수 출력(추가) 모든 예외상황 처리!! 추가되는 항목들이 좀 있지만 사실 기존 클래스를 재활용(로또로 만드는 부분, String값 파싱하는 부분, 예외처리한 부분 등) 할 것들이 많아 크게 힘든 부분은 없었습니다. 다만 로또를 수동으로 입력받을 때 제대로 값을 입력받지 않는 상황이 발생하였습니다. 처음 입력 받을 때는 제대로 입..
스프링 입문을 위한 자바 객체지향의 원리와 이해6 05. 객체 지향 설계 5원칙 - SOLID 객체 지향과 관련된 검색을 하면 SOLID원칙이 종종 발견이 되는데요. 이번 장에서 이 SOLID원칙이 어떤 것을 의미하는지를 다루고 있습니다. 물론 5가지 원칙을 이해하는 것과 이것을 적용하는 것과는 별개의 문제이지만 그래도 이를 잘 숙지하고 있어야 필요에 따라 잘 적용할 수 있다고 생각합니다. 먼저 5원칙은 다음을 의미합니다. SRP(Single Responsibility Principle) : 단일 책임 원칙OCP(Open Close Principle) : 개방 폐쇄 원칙LSP(Liskov Substitution Principle) : 리스코프 치환 원칙ISP(Interface Segregation Pri..
programmers 다리를 지나는 트럭 어제 세탁이 끝나기를 기다리며 읽어봤던 문제인데요. 처음엔 쉽다고 생각했습니다. 그 때는 고려해야할 변수들이 많이 안 보였거든요. 근데 막상 구현을 하려니 생각보다 변수들이 많더라구요. 현재 다리 무게, 대기 트럭, 다리 위의 트럭, 경과 시간 그래서 문제를 풀다가 이것저것 추가하다보니 되게 지저분해진 것 같아요. 다른 사람들은 어떻게 풀었는지 궁금하네요. 우선 제가 풀었던 방식을 코드로 살펴볼께요. import java.util.LinkedList; import java.util.Queue; class Solution { public int solution(int bridge_length, int weight, int[] truck_weights) { Queue..
Today's Dev Notes(2018-10-25) 안녕하세요, Brad입니다. 오늘의 목표는 '로또' 미션 2단계 피드백을 적용하는 것이었습니다. 몇 가지 피드백이 있었는데요. 하나씩 살펴보도록 하겠습니다. 피드백1. 불필요한 DTO 제거 설계를 할 때 LottoChecker라는 클래스를 만들고 이 안에서 로또를 확인하는 작업을 이관하였습니다. 그곳에서 각 로또를 확인하고 그 결과를 넘겨줄 때 StrikeDto 를 별도로 만들었는데요. 이것의 필요성에 대한 의문이었습니다. 결국은 로또 확인을 LottoChecker로 이관했기 때문에 StrikeDto가 생긴거라 LottoChecker의 필요성과 밀접하게 관련이 있는 것이죠. 이와 관련된 처리는 피드백2에서 이어서 하겠습니다. 피드백2. LottoChe..
예외처리 오늘 수업시간에 '예외처리'와 관련하여 배웠습니다. 이때까지 미션을 진행해오면서 이에 관한 깊은 이해없이 예외처리를 사용해왔었는데요. 오늘 Pair 프로그래밍에서 주어진 미션들을 해결해 나가면서 여러모로 많은 것들을 배울 수 있는 시간이었습니다. 미션 순서대로 하나씩 정리하면서 개념도 추가적으로 설명하겠습니다. 미션1. PointTest에서 Point에 대한 exception테스트를 추가한다. x, y 값이 0미만, 24초과에 대한 에러 테스트를 추가한다. 첫번째 미션은 JUnit4를 사용하는 테스트코드에서 예외발생했을 때 어떻게 테스트하는지입니다. 간단하게 테스트 코드에서 @test이라는 Annotation옆에 (expected = 예외명.class) 붙여주면 됩니다. 이 부분은 문법적인 내용..