본문 바로가기

전체 글1068

[자바] 백준 11909 - 배열 탈출 (java) 목차문제 : boj11909  필요 알고리즘DP (동적 계획법)DP를 알고 있다면 쉽게 해결 가능한 문제이다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  need(X, Y)를 X 좌표에서 Y 좌표로 갈 때 필요한 비용이라고 하자. 예를들어 X가 (1,1), Y가 (1,2) 이고, 배열의 값이 각각 3과 5였다면 need(X, Y)는 3이다.   이 때 dp[a][b]는 (a, b) 좌표로 가는데 필요한 최소 비용이라고 .. 2024. 5. 14.
[자바] 백준 1484 - 다이어트 (java) 목차문제 : boj1484  필요 알고리즘수학수학 문제긴한데 딱히 수학적 지식이나 알고리즘 지식이 필요한 문제는 아니다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  내 풀이 로직은 다음과 같다. 보면 알겠지만 딱히 수학이나 알고리즘 지식이 필요한 부분은 없다. 다만 이전과의 차이가 G를 넘어서는 제곱수부터는 무시해도 된다는 직관은 필요하다. 저걸로 인해 시간복잡도가 엄청 줄어든다. 1. 제곱수들의 리스트를 만드는데, 바.. 2024. 5. 2.
[자바] 백준 31778 - PPC 만들기 (java) 목차문제 : boj31778  필요 알고리즘그리디, 투 포인터 (두 포인터), 수학 그리디 아이디어로 풀 수 있고, 내 경우 투 포인터를 사용해 구현했다. 경우의 수를 찾기 위해 약간의 수학적 지식도 필요하다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  우선 어떻게 K번 연산을 적용해야 PPC 부분문자열의 최대치가 될지부터 생각해보자. 직관적으로 찾기 어렵지 않은데, 아무튼 최대한 많은 P가 앞쪽으로 가야하고, 최대한 .. 2024. 4. 30.
[자바] 백준 28109 - 약속 장소 2 (java) 목차문제 : boj28109  필요 알고리즘문자열, 그리디규칙을 찾아 그리디로 해결 가능하다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  규칙만 찾으면 로직은 생각보다 간단하다."CDD" 를 가지고 한 글자만 변경해서 사전순으로 어떻게 나타낼 수 있을지 생각해보자.순서대로 살펴보면 아래와 같다.// 첫번째 글자만 변경됨ADDBDD// 두번째 글자만 변경됨CADCBDCCD// 세번째 글자만 변경됨CCACCBCDC// 자기.. 2024. 4. 25.
[디자인 패턴의 아름다움] 4. 코딩 규칙 - 내용 정리 스터디 메인 페이지목차- ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다.- 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다.  CHAPTER 04. 코딩 규칙4.1 명명과 주석명명함수의 임시 변수와 같이 사용 범위가 비교적 작은 변수의 경우, a, b, c와 같은 짧은 이름을 사용할 수 있다. 하지만 전역 변수와 같이 범위가 큰 변수의 경우 긴 이름을 사용하는 것이 좋다.한눈에 설계 의도를 파악할 수 있기 때문이다.이하의 코드에서 굳이 위의 User 클래스처럼 user 접두사를 사용할 필요는 없다. 아래의 User .. 2024. 4. 24.
[디자인 패턴의 아름다움] 3. 설계 원칙 - 3.6~3.8 정리 (KISS, YAGNI, DRY, LoD) 스터디 메인 페이지목차- ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다.- 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다.  3.6 KISS 원칙과 YAGNI 원칙KISSKeep It Simple, Stupid코드를 단순하게 유지해라.적은 줄 수의 코드가 더 간단한건 아니다.e.g. 유효한 IP 주소인지 확인하는 함수1. 정규식으로 짜는 경우2. StringUtils 클래스와 Integer 클래스에서 제공하는 유틸리티 함수를 사용하여 처리하는 경우3. 직접 전부 구현하는 경우당연히 가장 짧은건 '1'이지만, 정.. 2024. 4. 24.
[자바] 백준 2836 - 수상 택시 (java) 목차문제 : boj2836  필요 알고리즘정렬, 스위핑사실 그냥 정렬 + 반복문 + 조건문만 알면 풀 수 있다. 아이디어가 더 중요한 문제다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  아이디어만 잘 떠올리면 풀 수 있는 문제이다. 내 경우 이하와 같이 진행했다.   어차피 0부터 M까진 무조건 가야 한다. 따라서 입력값에서 타는 위치가 목적지보다 이전이라면, 사실 신경을 안써도 .. 2024. 4. 24.
[수강평] 조영호님 - 도메인 주도 설계의 사실과 오해 (NEXTSTEP 오프라인 강의) 이번 주말에 조영호님이 진행하신 도메인 주도 설계의 사실과 오해 오프라인 강의를 수강하고 왔다. (토,일 4시간씩) https://edu.nextstep.camp/c/SXgXIKdd 도메인 주도 설계의 사실과 오해 edu.nextstep.camp 오브젝트 책과 객체지향의 사실과 오해(객사오) 책을 너무 흥미롭게 봤었다. 그러다가 조영호님의 집필 스타일이 마음에 들어서 팬이되었고 집필하신 책 외에도 감수하신 책도 찾아봤었다. 그러다가 저런 글을 올리셨다. 처음엔 인프런 같은곳에서 하실 줄 알고 대기타고있었는데 nextstep에서 오프라인 강의를 여셨다. 사실 강의 커리큘럼도 안보고 그냥 조영호님 강의 꼭 듣고 싶어서 그냥 바로 결제했다 ㅋㅋ. 결제하고 몇 분 후 모집 마감이 되었다. 18만원짜리 주말 강의.. 2024. 4. 21.
[세미나] 자바부터 스프링부트까지의 역사 자바부터 스프링부트까지의 역사 세미나 진행했던 ppt 입니다. 발표 스크립트까지 포함한 내용은 '대강 살펴보는 자바부터 스프링부트까지의 역사 (자바, CGI, Servlet, DispatherServlet, JSP, Thymeleaf, J2EE, EJB, POJO, Hibernate, JPA, Spring Data JPA, Spring, Spring Boot)' 글에서 보실 수 있습니다. ppt의 우측 상단 '새 탭에서 보기' 를 누르시면 크게보거나 pdf를 다운받아 보실 수 있습니다. 2024. 4. 18.
대강 살펴보는 자바부터 스프링부트까지의 역사 (자바, CGI, Servlet, DispatherServlet, JSP, Thymeleaf, J2EE, EJB, POJO, Hibernate, JPA, Spring Data JPA, Spring, Spring Boot) 사내 세미나로 진행한 내용을 발표 스크립트와 함께 작성한 내용 입니다. 많은 내용들을 축약하다보니 다소 정확하지 않은 내용이 포함되어 있을 수 있습니다. 설명의 흐름을 위해 연도 상관 없이 넣은 설명들이 있습니다. 보통 이런 애들은 연도를 따로 쓰지 않았습니다. 1991년 제임스 고슬링이 만들었습니다. 당시 썬 마이크로시스템즈 다녔고, 2010년에 오라클에 썬마이크로시스템즈가 인수 합병되었습니다. 그래서 요즘 오라클 사이트 들어가서 jdk 받거나 하게 된 겁니다. PHP, ASP, 펄 스크립트, C, 파이썬 등으로 CGI를 구현할 수 있습니다. 자바로도 구현 가능합니다. 일종의 스펙이므로 언어 무관하게 구현 가능합니다. 다만 단점은 요청 마다 새로운 프로세스를 생성하고, DB connection을 새로 .. 2024. 4. 18.