본문 바로가기

전체 글918

[자바] 백준 23740 - 버스 노선 개편하기 (java) 목차 문제 : boj23740 필요 알고리즘 정렬, 스위핑 스위핑을 통해 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. 겹친다는 부분을 어떻게 알 수 있을까? 노선A의 e가 노선 B의 s 이상이고, 노선 B의 e가 노선 A의 s 이상이라면 겹친다고 볼 수 있을 것이다. 이 때, 무조건 s가 증가하는 순서대로 정렬해두고 확인해본다고 해보자. s가 더 작은 쪽이 노선 A라고 한다면 이후 겹친다는 판단.. 2023. 4. 8.
[자바] 백준 5426 - 비밀 편지 (java) 목차 문제 : boj5426 필요 알고리즘 구현, 문자열 문제에 제시된 대로 구현해주면 된다! ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에서 제시된 것 처럼 문자열을 배열 형태로 바꿀 수 있다면, 역으로 반시계방향으로 90도 회전해준 후, 그걸 다시 문자로 바꾸면 답이 나올 것이다. 그럼 그대로 해보자. 우선은 정사각형이라고 했으므로, 배열의 크기는 문자열 길이의 제곱근이 된다. int len = (int) Math.. 2023. 4. 7.
개발자 쓸만한 인텔리제이 플러그인 추천 (IntelliJ Plugin) 목차 개인적으로 쓰고 있는 플러그인들 중에 쓸만한 것들을 한번 적어봤다. File -> Settings -> Plugins 에서 검색해서 설치하면 된다. Atom Material Icons IDE 전체적인 아이콘들을 이쁘게 해준다! 일단 깔아보고 너무 정신없으면 삭제하자. 내 경우엔 별론거 같아서 삭제했다가 어느순간 생각나서 다시 설치해뒀다. CodeGlance3 코드 우측에 미니맵같은걸 추가해준다. CodeMetrics 코드가 얼마나 복잡한지(?) 알려준다. 대충 저게 빨개지면 뭔가가 잘못되고 있다고 생각하면 된다. 물론 어쩔 수 없을때도 있다..(?) 이하 극단적인 경우긴 하지만 11차원 너비 우선 탐색이 필요한 백준 17114번 (하이퍼 토마토) 문제를 푼 코드이다 ㅋㅋ 우측에 CodeGlance3.. 2023. 4. 5.
[자바] 백준 1205 - 등수 구하기 (java) 목차 문제 : boj1205 필요 알고리즘 구현 결국 문제에서 제시된 방식대로 등수를 구해주면 되는 구현문제이다. 다만 실수하가기가 쉽게 문제가 구성되어 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 예외를 잘 처리해줘야 하는 구현 문제이다. 차분하게 조건들 다 따져가면서 구현해주면 된다. 1. n = 0일 경우 답은 항상 1이다. (P의 최소값은 10 이므로 불가능한 경우가 없다.) if (n == 0) { Syst.. 2023. 4. 5.
[파이선] 백준 1793 - 타일링 (python) 목차 문제 : boj1793 필요 알고리즘 동적 계획법(DP), 큰 수 기본적인 형태의 DP 문제이다. 다만 큰 수를 처리하는게 포함되어 파이썬 이외로 풀긴 좀 까다롭다. 풀이 별 생각없이 자바로 풀고보니 출력이 어마무시한 수였다.. ㅋㅋㅋㅋ DP를 BigInteger로 푸는 맛없는 짓은 하기 싫었으니 파이썬으로 갈아탔다. 이하 자바로 풀었다가 출력보고 버린 코드 이다. 파이썬으로 푼 맨 아래에 있는 코드에서 결국 핵심은 다음 한 줄 뿐이다. dp[i] = 2*dp[i-2] + dp[i-1] dp[x]를 x번째 열까지 타일을 놓는 경우의 수라 하자. dp[5]의 경우 아래 그림처럼 dp[4]에 2x1 타일을 놓는 경우와, dp[3]에 1x2 타일 2개를 놓는 경우, dp[3]에 2x2 타일을 놓는 경우가.. 2023. 4. 4.
읽은 책 소감 - 클린 코드 내용정리한건 '링크'에 있다. 만약 A가 "무조건 변수명과 코드는 짧으면 가독성이 좋아!" 라고 말했다고 해보자. 저 말을 들은 개발 입문자 B는 이후 별 생각 없었고, 이후 관련된 내용을 찾아볼 생각도 없었고 쭉 그렇게 믿고 있었다! 하지만 A는 당시엔 그렇게 생각했지만 이후 생각이 바뀌었을 수 있다. 그런 B가 이 책을 보지 못했다면 이후 욕먹을 일이 꽤 있었을 것 같다. 지금까지 별 생각없이 짜왔던게, 이 책을 보면서 생각이 바뀌게 될 계기가 될 수 있는 그런 책이다. "어 지난번에 팀원이 전역변수 앞엔 항상 'g_'를 앞에 붙여서 짜라고 했는데!" "무조건 주석은 상세하고 어떻게 짜여진건지 전부 적으면 좋다고 하던데!" ... 위에서 예시로 든 3가지는 당연히 전부 안좋은 경우이다 ㅋㅋ 근데 충분.. 2023. 4. 4.
읽은 책 소감 - 테스트 주도 개발 (TDD) 대부분의 개발자들은 TDD (Test-Driven Development)보다는 TDD (Time-Driven Development)(?)에 더 익숙할 것 같다. 처음 이 책을 읽어보게 된 이유는 'TDD가 정말 좋은가?'에 대해 답을 얻기 위해서였다. 뭐 구글링하면 나오기야 하겠지만, 일단 직접 알아야 써보면서 장단점을 알 수 있는 거니깐 공부하게 되었다. 대학생 때부터 난 생각난걸 코드로 옮기는 구현력(?)과 예외가 될만한 경우의 수를 미리 생각하는건 나름 자신있는편이었다. 그래서 테스트가 정말 필요한거 맞아? 그냥 잘 짜면 되는거 아님? 이렇게 생각했었다. 실제로도 테스트 없이 짜도 문제가 거의 없었다. 하지만 만든게 실제 운영될 때, 내가 운영을 안할 수 있다. 또 혼자서 만드는게 아니다. 그리고 .. 2023. 4. 4.
읽은 책 소감 - 만들면서 배우는 클린 아키텍처 아무래도 난 조용호님과 관련된 책을 좋아하는 것 같다. 오브젝트도 정말 멋졌고, 객사오도 멋졌다. 이 책도 조용호님이 감수를 한 책이었고, 이번에도 정말 멋졌다. 최근 클린 아키텍처, 헥사고날 아키텍처에 대해 스터디를 진행하며 팀원의 추천으로 읽게 된 책이다. 144쪽밖에 안되는 얇은 책임에도 클린 아키텍처에 대해 정말 짧고 굵게 잘 담아낸 멋진 책이라 생각한다. 가끔씩 정확히 어떤게 좋은지 선택을 해주지 않고 넘어가는 편이긴 하지만, 전반적으로 클린 아키텍처를 구성하는 데에 충분한 양의 답을 제시해준다. 아키텍쳐에 관심이 있다면 일단 이것부터 읽고 다른걸 읽는게 이해하기 좋을 것 같다. 얇기도 하고 크게 어려운 내용도 없이 쉽게 잘 설명해준다. 특히 '11. 의시적으로 지름길 사용하기' 부분이 마음에 .. 2023. 4. 3.
읽은 책 소감 - 지속적인 통합 스터디로 진행했던 책이다. 책 내용 정리는 '[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.