본문 바로가기

전체 글1099

[종만북] POLY - 폴리오미노 (자바 java) 알고리즘 문제해결전략(종만북) 스터디 메인 페이지 목차 문제 : aoj-POLY 풀이 문제에서 제시된 규칙은 결국, 세로야 어떻든 가로로 선을 그었을 때 빈 곳이 있으면 안되고 또 전부 붙어있어야한다는 의미가 된다. 따라서 n개를 행 1개~행 n개 에 걸쳐 각 행에 몇 개씩 배치할 것인지로 바꿔서 생각하면 된다. 그리고 2개의 행을 봤을 때, 두 행에 대해 만들 수 있는 경우의 수는 '행1의 블록 수 + 행2의 블록 수 - 1' 이 된다. 예를들어 각 행에 3개씩 배치했을 경우 나올 수 있는 경우의 수는 3+3-1 = 5 이다. 아래 경우들과 같다. 따라서 각 행별로 현재 남은 블록의 수를 '1개부터 남은 블록의 수'로 배치하면서 위에서 얘기한 경우의 수를 바로 직전 행의 블록수와 함께 계산해보면 된다... 2023. 4. 10.
[종만북] NUMB3RS - 두니발 박사의 탈옥 (자바 java) 알고리즘 문제해결전략(종만북) 스터디 메인 페이지 목차 문제 : aoj-NUMB3RS 풀이 예제 입력의 첫 번째 테스트케이스를 그래프로 그려보면 아래와 같다. 탈출 전 확률이 1(100%)이라 한다면 이후 간선을 따라, 간선이 존재하는 만큼 확률이 나뉘어져서 들어가게 된다. 탈출 전일 때 0에서 시작하므로 0은 1로 시작하고, 탈출 1일차에 0에서 갈 수 있는 간선이 1,2,3 이므로 1/3씩 나뉘어 들어간다. 그리고 2일차에 1과 3에 있던 1/3은 0으로 다시 돌아오고, 2에 있던 1/3은 0과 4로 1/6씩 나뉘어 들어가게 된다. 따라서 2일차에 0에 위치는 5/6, 1,2,3 위치는 0, 4는 1/6이 된다. 이런식으로 일차별로 계속 진행한 후 q에 따라 출력해주면 된다. 코드 : github i.. 2023. 4. 10.
[자바] 백준 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.