본문 바로가기

분류 전체보기1047

[자바] 백준 25377 - 빵 (java) 문제 : boj25377 필요 알고리즘 개념 구현 문제에서 제시된 방식대로 구현해주면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 로직은 아래와 같다. N을 입력받는다. 이하를 N번 반복한다. ___1. A, B를 입력받는다. ___2. A>B 라면 빵이 도착한 이후에 가게에 가는 것이므로 빵이 없다. 그러니 '1'로 돌아간다. ___3. '3'에 왔다면 빵을 구매 가능한 것이다. A는 필요없고, '3'까지 .. 2023. 1. 29.
TDD, Mock, SOLID 얘기 - 도시 가스 요금 계산 스터디 메인 페이지 목차 - TDD 스터디에서 라이브코딩으로 TDD를 통한 도시 가스 요금 도메인을 만들면서, Mock과 객체지향의 SOLID 일부를 섞어서 설명한 내용입니다. 비싸진 도시가스 요금에 맞춰 도시가스 요금 관련으로 준비했습니다. 작년 11월부터 스터디했던 TDD, 클린코드, 오브젝트에서 배운걸 섞어서 시나리오를 만들어봤습니다. 개선점이 있다면 알려주세요. - 요구사항 : 도시가스 요금을 계산하는 간단한 로직이 필요함. '단위 요금 x 사용량' 으로 금액을 계산할 것임. 다만 다른 요금 계산 방식이 추가될 예정이다(취약계층 할인 등등). 추가로 아직 DB 부분이 정해지지 않은 상태에서 우선 요금 계산 하는 로직부터 테스트해보며 짜려 하는 상황이다. github 코드 (이하 단계에 따라 커밋되.. 2023. 1. 29.
[자바] 백준 2999 - 비밀 이메일 (java) 문제 : boj2999 필요 알고리즘 개념 구현, 문자열 문자열을 파싱해서 문제에서 제시된대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. 우선 R과 C를 구해야 한다. R= 1; i--) if (len%i==0) return i;// 나누어 떨어지는걸 찾을 시 i 리턴 return 0; } 2. 이제 세로로 써져있던걸 가로로 출력해줘야 한다. R과 C를 구했으니 출력은 어렵지 않다. 초기 문자열.. 2023. 1. 27.
[자바] 백준 9076 - 점수 집계 (java) 문제 : boj9076 필요 알고리즘 개념 정렬, 구현 정렬을 이용해 문제에서 제시된대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 로직은 아래와 같다. 각 테스트마다 [A]____5개의 점수를 입력받는다. [B]____5개를 정렬한다. (정렬 후 1번째와 5번째 값은 최고점과 최저점이므로 무시한다.) [C]________if 2번째 점수와 4번째 점수가 4이상 차이난다면 KIN을 출력한다. [D]_.. 2023. 1. 25.
[수강평] 토비의 스프링 부트 - 이해와 원리 - 강의 링크 : 인프런 - 강의 보면서 따라해본 깃헙 코드 : github GitHub - nahwasa/toby-spring-boot: 토비의 스프링 부트 강의 보면서 코딩 토비의 스프링 부트 강의 보면서 코딩. Contribute to nahwasa/toby-spring-boot development by creating an account on GitHub. github.com 스프링부트를 사용중이었지만 스프링 자체에 대해서는 거의 아는바가 없었다. 그래서 얼마전에 토비의 스프링 3.1을 구매했었는데, 마침 토비님이 스프링부트 강의를 내고 얼마 뒤 인프런에 올라온다는 소식이 들렸다. 2023-01-19에 올라오자마자 구매했었다. 일단 샀으니 살짝이라도 보자는 마음에 설날에 시간도 많겠다 보기 시작.. 2023. 1. 24.
[자바] 백준 1422 - 숫자의 신 (java) 문제 : boj1422 필요 알고리즘 개념 정렬, 그리디 그리디로 접근해서 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 K==N 이라고 생각해보자. 즉, 모든 숫자를 1번씩 배치해서 가장 큰 수를 만들어야 한다. 어떤 수를 먼저 배치하는게 이득일까? 어차피 만들어진 수의 자리수는 K개의 숫자들의 자리수의 합과 동일하다. 따라서 단순히 큰 수가 먼저오는건 의미가 없다. 예를들어 1과 100 중에 크다고 1.. 2023. 1. 24.
[자바] 백준 3101 - 토끼의 이동 (java) 문제 : boj3101 필요 알고리즘 개념 수학, 구현 수학태그가 달려있긴한데, 약간의 규칙찾기 + 구현 문제인 것 같다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 대각선으로 지그재그로 작성된걸 잘 살펴봐보자. 1 -> 2 -> 4 -> 7 -> 11 -> 16 까지 등차수열처럼 증가한다.(증가비가 1, 2, 3,...) 그리고 36 -> 34 -> 31 -> 27 -> 22 에서 등차수열처럼 감소한다.(감소비가 2, .. 2023. 1. 23.
[클린코드] 13장. 동시성 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 13장. 동시성 ⚈ 동시성과 깔끔한 코드는 양립하기 어렵다. 스레드를 하나만 실행하는 코드는 짜기가 쉽다. ⚈ 동시성이 필요한 이유 동시성은 결합(coupling)을 없애는 전략이다. 즉, 무엇(what)과 언제(when)를 분리하는 전략이다. 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하다. ⚈ 동시성의 미신과 오해 동시성은 항상 성능을 높여준다. -> 동시성은 때로 성능을 높여준다. 대기 시간이 아주 길거나 여러 프로세서가 동시에 처리할 독립적인 .. 2023. 1. 21.
[클린코드] 12장. 창발성 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 12장. 창발성 ⚈ ☆ 창발성 : 하위 계층(구성 요소)에는 없는 특성이나 행동이 상위 계층(전체구조)에서 자발적으로 돌연히 출현하는 현상 ⚈ 착실하게 따르기만 하면 우수한 설계가 나오는 간단한 규칙 네 가지! (중요도 순) 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. ⚈ 모든 테스트를 실행하라 테스트를 철저히 거쳐 모든 테스트 케이스를 항상 통과하는 시스템은 '테스트가 가능한 시스템'이다. 테스.. 2023. 1. 21.
[클린코드] 11장. 시스템 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 11장. 시스템 ⚈ 소프트웨어 시스템은 애플리케이션 객체를 제작하고 의존성을 서로 '연결'하는 준비 과정과 준비 과정 이후에 이어지는 런타임 로직을 분리해야 한다. ⚈ 시스템 생성과 시스템 사용을 분리하는 한 가지 방법으로, 생성과 관련한 코드는 모두 main이나 main이 호출하는 모듈로 옮기고, 나머지 시스템은 모든 객체가 생성되었고 모든 의존성이 연결되었다고 가정한다. 애플리케이션은 그저 객체를 사용할 뿐이다. ⚈ 팩토리 - 때로는 객체가 생성되는 시점.. 2023. 1. 21.