본문 바로가기

전체 글1068

[자바] 백준 20920 - 영단어 암기는 괴로워 (java) 목차 문제 : boj20920 필요 알고리즘 정렬, 해시를 사용한 집합과 맵 해당 단어가 몇 번 나왔는지 알기 위해 HashMap을 쓸 수 있어야 한다(다른 방법들도 있긴하다). 그 외에는 문제에서 제시된 방법대로 정렬이 가능한지 묻는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 내 경우엔 Word라는 클래스를 만들고 name이 단어, cnt가 해당 단어가 몇 번 나왔는지를 뜻하도록 했다. 우선은 동일한 단어가 .. 2023. 4. 9.
인프런 김영한님 머그컵 득! 3월에 인프런에서 이벤트로 준 김영한님 머그컵이 도착했어요. 머그컵 자체를 쓸일은 잘 없어서 전시용(?)으로 잘 간직할 예정입니다! 2023. 4. 8.
[자바] 백준 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.