전체 글1068 읽은 책 소감 - 지속적인 통합 스터디로 진행했던 책이다. 책 내용 정리는 '[Study 009] 지속적인 통합' 에서 볼 수 있다. CI/CD 혹은 devOps라 불리는 내용에 대해 다루는 책이다. 읽기 편하고 쉬운 내용이면서도 CI/CD에 대해 어느정도 알 수 있다. CI/CD가 현재 거의 이루어지지 않는 곳에 CI/CD를 도입하려고 할 때 다같이 빠르게 읽고 도입하면 좋을 것 같다. 단점은 초판이 2008년에 나온 책이다보니, 현재와 기술적으로 맞지 않는 부분이 대부분이다. 예를들어 주로 빌드 스크립트들을 Ant를 사용한 빌드 스크립트로 알려준다. 그러니 마인드 적인 부분이나 CI/CD를 도입했을 때 얻는 이점, 어떠한 것들을 구축해야 하는지만 책에서 살펴보고 요즘 유행하는 CI/CD 기술들은 별도로 찾아보는게 좋을 것 같다. 즉.. 2023. 4. 3. 기본적인 자바 람다(Lambda) 목차 개인적으로 가독성이 좋은지 잘 모르겠어요. 개인적으로 람다가 정말 가독성이 좋은진 잘 모르겠다. 그렇다고 안쓴다는 얘기는 아니고, 쓰긴 쓴다. 다만 쓸 수 있다고 너무 아무대나 다 써버리면 읽기 편하다는 장점이 오히려 사라지는 것 같다. 코드가 짧다고 항상 가독성이 좋은건 아니다. 익명 클래스를 사용한 A보다는 람다를 사용한 B가 더 보기 편한게 맞다. 보기 편하긴 하지만 결국 아래처럼 좀 생소한 클래스에 써있다면 결국 까봐야 한다. 특히 생성자가 많다면 더 헷갈릴 것 같다. (물론 인텔리제이 기준 ctrl 누른상태로 클릭하면 해당 생성자로 바로 이동하긴 한다.) 아무튼 개인적으로 그렇다는거고, 코드가 더 짧아져서 어느 수준 이상의 실력이라면 보기 편한게 사실이다. 그러니 기본은 알아두자. 람다 기.. 2023. 4. 3. Spring Initializr 에서 선택한 자바 버전은 어떤 의미일까? 목차 Spring Initializr는 자바 버전을 선택할 수 있다! 근데 알다시피 스프링 부트 3.0 부터는 자바 17 이상을 써야 하는데, Spring Initializr는 아무튼 버튼은 그대로 표출되어 있다. 이와 관련된 에러는 '스프링부트 3.0.0 프로젝트 생성시 에러 해결법' 에서 볼 수 있다. 그럼 궁금한건 그럼 저 "자바 버전을 선택하는게 어떤 의미가 있나?" 라는 부분이었다. 자바 버전을 변경하면 바뀌는 부분 스프링부트 2.7.X 버전이하일 경우 자바 버전을 바꾸면 변경되는 부분은 build.gradle의 sourceCompatibility 부분이다. 그리고 스프링부트 3.0.x 버전의 경우, 분명 3.0.0 초창기에는 Spring Initializr로 생성 시 17버전이 아니라면 저 부.. 2023. 4. 3. [자바] 백준 23813 - 회전 (java) 목차 문제 : boj23813 필요 알고리즘 구현, 문자열, 수학 문자열로 문제에서 제시된대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제 제한이 짧아서 그냥 문자열 자체로 자르고 붙이고 Integer.parseInt로 정수로 변경해주면서 구현해도 상관없다. 내 경우엔 숫자로 바꿔서 계산했다. 우선 mult는 입력으로 들어온 숫자의 자리수-1 만큼 0이 붙은 숫자이다. 예를들어 "12345"라면 .. 2023. 4. 3. [종만북] ASYMTILING - 비대칭 타일링 (자바 java) 알고리즘 문제해결전략(종만북) 스터디 메인 페이지 목차 문제 : aoj-ASYMTILING 풀이 일단 대칭인 경우는 생각하지 않고, 2xn 타일링부터 생각해보자. dp[x]를 x번째 열까지 타일을 높는 경우의 수라 하자. 이 경우 dp[5]의 경우 아래 그림처럼 dp[4]에 2x1 타일을 놓는 경우와, dp[3]에 1x2 타일 2개를 놓는 경우가 있을 것이다. 즉, dp[x] = dp[x-1] + dp[x-2] 로 구할 수 있다. 답은 dp[n]이 된다. 그럼 다음으로 대칭인 경우를 제외해보자. 열이 홀수개일 경우 대칭인 경우는 이하처럼 중간에 2x1 타일이 있는 경우이다. 즉, dp[n]에서 dp[(n-1)/2] 를 빼주면 된다! (대칭인 경우를 빼면 되므로) 열이 짝수개인 경우엔 다음의 두 가지 경우.. 2023. 4. 3. [종만북] PI - 원주율 외우기 (자바 java) 알고리즘 문제해결전략(종만북) 스터디 메인 페이지 목차 문제 : aoj-PI 풀이 각 테스트케이스에 대해 dp[x] 를 x번째 숫자까지 표현하기 위한 최소 난이도라 정의하자. 저 정의대로 구할수만 있다면 답은 dp[문자열 길이] 가 될 것이다. 현재 문자열의 z번 문자를 보고 있다고 해보자. 이 때 dp[x]가 x번째 숫자를 표현하기 위한 최소난이도임이 확실하다면 dp[z]는, min( dp[z-3] + '이전 3개의 문자 난이도', dp[z-4] + '이전 4개의 문자 난이도', dp[z-5] + '이전 5갱의 문자 난이도') 라고 할 수 있다. 따라서 이대로 구현해주면 된다! 말한대로 이전 3개, 4개, 5개의 난이도를 계산하면서 최소값을 갱신해나가면 된다. 점수 계산은 score() 함수로 처리했다.. 2023. 4. 2. [자바] 백준 2033 - 반올림 (java) 목차 문제 : boj2033 필요 알고리즘 구현 반올림을 직접 해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 입력으로 들어온 숫자를 각 자리수별로 배열로 잘라두고 직접 반올림을 진행해주면 된다! 예를들어 "446"일 경우 아래처럼 진행된다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main {.. 2023. 4. 2. [종만북] WILDCARD - Wildcard (자바 java) 알고리즘 문제해결전략(종만북) 스터디 메인 페이지 목차 문제 : aoj-WILDCARD 풀이 우선 '*'이 연속으로 있는 경우는 처리만 어렵게 만들고 하나만 있는 경우와 동일하다. 따라서 입력받은 W에서 '*'이 연속으로 있다면 하나로 변경해줬다. 즉, "ab********c" 라면 "ab*c"로 변경해준다. private String compressContinuousAsterisk(String w) { while (w.indexOf("**") != -1) { w = w.replace("**", "*"); } return w; } 그럼 이제 연속된 '*'이 하나로 합쳐진 W와 현재 보고 있는 문자열 cur에 대해 각각 포인터를 두고 움직인다고 해보자. 이 경우 두 개의 포인터가 가르키는 문자열이 동일하거.. 2023. 4. 2. IntelliJ는 왜 jdk(java)를 설치 안해도 동작할까? 어찌보면 당연한내용인데, 인텔리제이를 처음 썼을 땐 엄청 신기했던 것 같다. 인텔리제이의 경우 jdk를 설치하지 않아도 잘 동작한다. 혹시 당연히 자바를 설치해야 한다고 생각해서 따로 설치하고 환경변수까지 등록해서 사용중인 사람들도 있을 것 같은데, 사실 환경변수에 등록 안되있어도 인텔리제이는 혼자서 잘 동작한다. 프로젝트마다 독립적으로 동작하기 위해 jdk를 환경변수로 등록 안하고 사용하는게 더 좋을 것 같다. 그렇지 않으면 프로젝트마다 실행하기 전에 환경변수를 가서 버전 바꿔주거나, 리눅스쪽이라면 sdkman 같은걸로 자바 버전을 변경해주면서 써야 할 것이다. 인텔리제이에서는 File -> Project Structure에서 자바 버전을 선택할 수 있고, 또 원한다면 추가할 수 있다. 이렇게 받아진 .. 2023. 3. 28. [자바] 백준 25904 - 안녕 클레오파트라 세상에서 제일가는 포테이토칩 (java) 목차 문제 : boj25904 필요 알고리즘 구현, 시뮬레이션 문제에서 제시된 방식대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 어차피 목소리 높이의 상한선은 200이므로, N이 몇이 되든 최악의 경우에도 200번만 확인해보면 된다! 따라서 어렵게 생각할 것 없이, N개짜리를 순서대로 계속 확인하면서 매번 X를 1씩 증가해준다. 그리고 X의 값이 해당 위치보다 더 커지면 해당 위치를 출력해주면 된다. .. 2023. 3. 27. 이전 1 ··· 18 19 20 21 22 23 24 ··· 107 다음