본문 바로가기

전체 글1068

[오브젝트] 5장. 책임 할당하기 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 오브젝트(조용호 저) 책 입니다. CHAPTER 05. 책임 할당하기 2장에서는 책임을 중심으로 설계된 객체지향 코드의 대략적인 모양을 살펴봄. 5장에서는 2장에서 소개한 코드의 설계 과정을 따라가 보면서 객체에 책임을 할당하는 기본적인 원리를 살펴보는 챕터. 01 책임 주도 설계를 향해 ⚈ 데이터 중심의 설계에서 책임 중심의 설계로 전환하기 위한 원칙 데이터보다 행동을 먼저 결정하라 협력이라는 문맥 안에서 책임을 결정하라 [ 데이터보다 행동을 먼저 결정하라 ].. 2022. 12. 2.
[오브젝트] 4장. 설계 품질과 트레이드오프 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 오브젝트(조용호 저) 책 입니다. CHAPTER 04. 설계 품질과 트레이드오프 - 코드 (github) ⚈ ☆ (2장 관련한 내용) 예를들어 책에서 설명된 영화 할인 정책에서, 현재는 정책이 금액 정책 하나지만 차후 정책이 추가될게 분명해서 미리 추상화 해둔다면 이건 다형성일까? -> 다형성이 맞긴 하지만, 의미 없는 다형성 (YAGNI) ⚈ 객체지향 설계의 핵심은 책임 책임이 객체지향 애플리케이션 전체의 품질을 결정 객체지향 설계란 올바른 객체에게 올바른 책.. 2022. 12. 2.
[자바] 프로그래머스 - 순서쌍의 개수 (Lv0, Java) 문제 : Programmers-순서쌍의 개수 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 필요 알고리즘 개념 브루트포스 n의 크기가 100만밖에 안되므로 그냥 1부터 n까지의 모든 수를 비교해보면 된다. O(n) 수학 (정수론) 좀 더 효율적으로 O(sqrt(n))으로도 풀 수 있다. 이 경우 수학적 지식이 좀 필요하다. 풀이 우선 n의 크기가 100만으로 매우 작으므로 그냥 1부터 n까지의 모든 수를 보면 된다. a를 1부터 n까지 증가시키면서, n%a == 0 이라면 b = n/a 가 되므로 answer을 1 증가시켜주면 된다. 이 경우 O(n)이 걸린다. int answer = 0; for (int i = 1; i 2022. 12. 2.
[자바] 백준 8949 - 대충 더해 (java) 문제 : boj8949 필요 알고리즘 개념 문자열. 구현 문자열을 파싱할 줄 알아야 풀 수 있다. 이외 로직은 문제에서 제시된 대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. 예를들어 A = "123, B = "2495" 라고 해보자. 이 때 문자열 자체로 A = "0123", B = "2495" 처럼 자리수를 동일하게 맞추기 위해 앞에 '0'을 넣어준다고 하자. 2. 그렇다면 A와 B의 길이는 동.. 2022. 11. 30.
[자바] 백준 17071 - 숨바꼭질 5 (java) 문제 : boj17071 필요 알고리즘 개념 그래프, BFS (너비 우선 탐색) 결론적으로 보면 그냥 BFS 문제이다. 다만 아이디어가 좀 필요하다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 생각 과정 및 풀이 이 문제의 경우 상당히 많이 잘못 생각했고, 결론적으로 proof by AC (정답 맞췄으니 증명됬다!) 느낌으로 풀었다 ㅋㅋ. 그러니 풀이를 생각한 과정을 적어보겠다. 정답 코드만 볼꺼면 맨 아래의 코드만 보면 될 .. 2022. 11. 29.
백준 2563 - 색종이 (자바, C, C++, node.js, Kotlin, Python, C#) 문제 : boj2563 필요 알고리즘 개념 구현 문제에 제시된대로 구현을 하면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 가장 쉽게 생각해볼 수 있는건, 100x100 짜리 배열을 만든 후 전부 0 또는 false로 초기화한다. 이후 입력을 받아 10X10 정사각형 모양의 색종이를 직접 배열에 +1 혹은 true로 변경한다. 이후 100x100 배열을 한번 더 순회하면서 0 또는 false가 아닌 배열 값의 수를 .. 2022. 11. 29.
[자바] 백준 23972 - 악마의 제안 (java) 문제 : boj23972 필요 알고리즘 개념 수학 수학적 사고가 필요한 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에 제시된 방식에서 민주가 가지고 있는 금액이 x라 할 때, 손해를 보지 않는다는걸 수식으로 표현하면 '1'과 같다. 이걸 '5'가지 쭉 식을 정리해보자. 결국 '5'의 식이 나오고, 저걸 구해주면 된다. 이하 코드처럼 나눈 몫을 정수형으로 변경한 div, 나머지인 mod가 있을 때, div+(.. 2022. 11. 28.
읽은 책 소감 - 면접을 위한 CS 전공지식 노트 팀 스터디 개시용으로 3주정도로 끝내면서, 우선 느낌 보게 난이도가 좀 쉬워보이는 책을 골랐다. [Study 002] 면접을 위한 CS 전공지식 노트 정말 책 제목대로 '면접을 위한'이었다고 생각된다. 전반적으로 내용이 얕은 편이었고(네트워크만 좀 과한듯), 설명이 좀 의아한 부분들이 있었다(이해용 보다는 외우기용). 그래도 많지 않은 페이지에 디자인 패턴, 운영체제, DB, 자료구조, 네트워크, 개발자 면접 내용까지 다 담아내려면 어쩔 수 없는 선택이었을 것 같다. 결론적으로 이 책을 읽으려는 사람들의 상황별로 개인적으로 생각해보면 아래와 같다. 1. 면접 준비하려는데 ㄹㅇ 아무것도 모르겠음 -> 좋다. 뭔가 개발용어가 나왔을 때 뭐라도 한마디 할 수 있는것까지를 원한다면 매우 좋은 책이다. 2. 취업.. 2022. 11. 28.
[자바] 백준 6763 - Speed fines are not fine! (java) 문제 : boj6763 필요 알고리즘 개념 구현 문제에 제시된 대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. gap = 차 속도 - 속도 제한 2. gap 2022. 11. 27.
[자바] 백준 6750 - Rotating letters (java) 문제 : boj6750 필요 알고리즘 개념 문자열, 구현 문자열 파싱이 필요한 구현 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. 입력으로 받은 문자열의 각 문자열이 I, O, S, H, Z, X, N 중 하나인지 판단해야 하므로, I, O, S, H, Z, X, N를 쉽게 사용할 수 있는 방식으로 코드에 넣어둔다. 내 경우엔 그냥 String으로 두었고, 배열로 둬도 된다. 2. 입력받은 문자열의 각 문자를.. 2022. 11. 26.