본문 바로가기

분류 전체보기1108

[자바] 백준 9465 - 스티커 (java) 문제 : boj9465 필요 알고리즘 개념 동적 계획법 (Dynamic Programming, DP) DP로 풀 수 있는 문제이다. DP는 알고리즘이라기 보단 문제 푸는 방식? 같은 거라 생각한다. 어쨌든 어떤건진 미리 알고 풀어야 생각해낼 수 있을 것 같다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 스티커 위치가 아래와 같다고 해보자. A C E B D F 이 때, 각 스티커의 가치 중 음수인 것은 없으므로 결국 우측.. 2022. 12. 21.
[자바] 백준 14588 - Line Friends (Small) (java) 문제 : boj14588 필요 알고리즘 개념 Floyd-warshall 또는 BFS, 그래프 이론 플로이드 와샬 혹은 BFS로 풀 수 있는 그래프 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. 결국 서로간의 최단거리를 구해야 함. 그럼 bfs, 플로이드 와샬, 다익스트라 정도가 생각남. 2. O(N^3) 해도 N이 300이라 매우 충분하므로 대충 구현 쉬운 플로이드 와샬로 진행함. 3. 중요한건 일단 위치정보.. 2022. 12. 21.
[자바] 백준 5341 - Pyramids (java) 문제 : boj5341 필요 알고리즘 개념 구현, 수학 수학적 사고를 약간 포함한 구현문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 피라미드의 바닥 크기가 주어졌을 때, 꼭대기가 1개짜리 블록이라면 총 몇 개의 블록이 사용됬냐고 묻는 문제이다. 즉 n이 주어졌을 때, 1부터 n까지의 합을 출력해주면 된다. 이 때 1부터 n까지 직접 더하려면 너무 오래걸리니 등차수열 합 공식을 사용하면 된다. 1부터 n까지 등차가 .. 2022. 12. 21.
[자바] 백준 26489 - Gum Gum for Jay Jay (java) 문제 : boj26489 필요 알고리즘 개념 구현 문제에서 제시된대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 입력이 어떻게 들어오는진 상관 없다. 몇 줄인지만 알면 된다! 즉, eof(end of file)을 어떻게 찾는지 알면 풀 수 있다. 자바의 BufferedReader의 경우 eof를 만나면 null을 리턴한다. 따라서 null이 뜰 때 까지 카운팅해주면 된다. 코드 : github impor.. 2022. 12. 21.
[자바] 백준 24082 - Cube (java) 문제 : boj24082 필요 알고리즘 개념 사칙연산, 수학 입출력 연습에 가까운 기본적인 수학 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에서 주어지는 숫자 x를 입력받은 후, x^3을 출력해주면 된다. 1 2022. 12. 21.
[자바] 백준 26209 - Intercepting Information (java) 문제 : boj26209 필요 알고리즘 개념 구현 문제에서 제시된대로 구현하는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 입력으로 받은 각 bit가 0 또는 1로만 이루어져 있으면 S, 아니라면 F를 출력하면 되는 문제이다. 이 때 입력은 0, 1, 9 중에 하나라고 했으므로 9가 하나라도 존재한다면 F를 출력하고, 없었다면 S를 출력해주면 된다. 코드 : github import java.io.Buffered.. 2022. 12. 21.
[자바] 백준 8545 - Zadanie próbne (java) 문제 : boj8545 필요 알고리즘 개념 구현, 문자열 문자열을 입력받아 문제에 제시된 대로 구현하는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문자열을 입력받아 좌우 반전 시킨 문자열을 출력해주면 된다. 자바의 경우 StringBuilder에 reverse라는 기능으로 가능하므로 입력받은 String을 StringBuilder로 변경해주고 reverse()의 결과를 다시 출력해주면 된다. 코드 : githu.. 2022. 12. 21.
[클린코드] 4장. 주석 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 4장 주석 ⚈ "나쁜 코드에 주석을 달지 마라. 새로 짜라." ⚈ 주석은 언제나 실패를 의미한다. 주석을 달 때마다 자신에게 표현력이 없다는 사실을 푸념해야 마땅하다. 주석은 거짓말을 한다. 주석은 오래될수록 코드에서 멀어진다. 프로그래머들이 주석을 유지하고 보수하기란 현실적으로 불가능하다. 주석은 나쁜 코드를 보완하지 못한다 ⚈ 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 자신이 저지른 난장판을 주석으로 설명하려 애쓰는 대신에.. 2022. 12. 21.
[클린코드] 3장. 함수 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 3장 함수 - 길이가 짧고, 이름이 좋고, 체계가 잡힌 함수를 만드는 방법 작게 만들어라! ⚈ 작은 함수가 좋다. ⚈ 이하와 같은 수준으로 줄여야 한다. public static String renderPageWithSetupsAndTeardowns(PageData pageData, boolean isSuite) { if (isTestPage(pageData)) { includeSetupAndTeardownPages(pageData, isSuite); .. 2022. 12. 20.
[자바] 백준 11378 - 열혈강호 4 (java - 풀이4개) 목차 문제 : boj11378 필요 알고리즘 개념 네트워크 플로우(최대 유량) 애드몬드 카프 등의 네트워크 플로우(최대 유량) 알고리즘을 알고 있어야 한다. 단, 자바의 경우 빠른 입출력까지 사용해야 애드몬드 카프 알고리즘으로 시간 초과 없이 통과 가능하다. 이분매칭 네트워크 플로우에서 이분 그래프로 구성이 가능할 시 사용 가능한 이분매칭 알고리즘을 사용하면 네트워크 플로우보다 더 빠른 시간내에 통과 가능하다. 이 경우엔 자바라도 빠른 입출력 없이도 여유롭게 통과 가능하다. 풀이 1과 풀이 2에서 최대 유량을 이용한 풀이를 한다. 풀이 3과 4에서는 이분매칭을 통해 풀어본다. 각 풀이는 네트워크 플로우 또는 이분매칭 알고리즘의 기본적인 구현 방식을 알고있다는 전제하에, k개의 추가된 일을 어떻게 처리하는.. 2022. 12. 18.