본문 바로가기

분류 전체보기1068

[자바] 백준 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.
[TDD] 스터디 1주차 (기본적인 테스트 방법, 1~2장 정리) 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. ☆ 스터디 킥오프 (테스트 관련 랜덤 팁) 이하 내용은 책 내용 스터디 들어가기 전에 스터디 팀원들끼리 공유한 내용이다. [ Octoping925님의 발표 자료 : https://github.com/Octoping925/TestCodePresent ] ⚈ 실제 구현부와 테스트쪽의 패키지, 클래스명 구조를 동일시 하는게 중요하다. ⚈ GWT, AAA Given : 특정한 값을 가지고 When : 로직을 실행했을 때 Then : 잘 나왔는지 검증한다. AAA : Assignment(=Giv.. 2022. 12. 18.