본문 바로가기

전체 글1064

[자바] 백준 2734 - 드럼통 쌓기 (java) 목차문제 : boj2734  필요 알고리즘기하학기하학 문제이다... 수학 어렵다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  입력으로 쓰레기통의 가장 아래에 있는 N개의 드럼통이 주어진다. 그리고 항상 그 윗줄에는 N-1개의 드럼통이 있다고 했고, 그런식으로 위로 쌓다가 가장 위 1개의 드럼통의 (x,y)를 구하는 문제이다.   그래서 풀이자체는 간단한데, N개의 입력이 주어지면 최종적으로 남은게 1개일 때 까지 다음을.. 2024. 5. 27.
[자바] 백준 18436 - 수열과 쿼리 37 (java) 목차문제 : boj18436  필요 알고리즘세그먼트 트리, 펜윅 트리, 제곱근 분할법위 알고리즘 혹은 자료구조 중 아무꺼나 쓰면 된다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  세그먼트 트리, 펜윅 트리, 제곱근 분할법 등 풀 수 있는 방법은 많다. 아무튼 단일 업데이트, 범위 쿼리를 유효한 시간 내에 처리 가능한 코드를 짜면 된다. 이하 코드는 펜윅 트리를 사용해 풀었다. 펜윅트리에 대한 설명은 '이 글'에서 볼 수.. 2024. 5. 24.
[자바] 백준 2026 - 소풍 (java) 목차문제 : boj2026  필요 알고리즘브루트포스, 백트래킹백트래킹을 써서 모든 경우를 살펴보면 된다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  그냥 백트래킹 섞어서 브루트포스로 해보고 안되면 다른 방법을 찾으려고 했는데 통과됬다. 초기 명분(?)은 어차피 최악의 경우 K가 62일 경우, 최소로 필요한 간선은 62*61 = 3782개인데 F가 최대 5600이라서 최악의 경우라도 5600개 중 3782개가 쓰여야 되므.. 2024. 5. 23.
[자바] 백준 21610 - 마법사 상어와 비바라기 (java) 목차문제 : boj21610더보기  필요 알고리즘시뮬레이션제시된 대로 구현하면 된다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  그냥 문제에 제시된대로 구현하면 되서 풀이는 필요없을 것 같다. 이하 코드는 그냥 풀긴 좀 심심할 것 같아서 2차원 배열을 쓰지 않고 풀어봤다. 그러니 2차원 배열 안쓰고 푸는걸 참고하려면 코드를 확인해보자. 각 단계별로 처리하는 코드는 주석을 달아두었다. 2차원 배열로 문제에 제시된대로 구현.. 2024. 5. 23.
[자바] 백준 27501 - RGB트리 (java) 목차문제 : boj27501  필요 알고리즘트리 DP (트리 + 동적계획법)트리에서 DP를 사용해 푸는 문제이다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  '백준 1149 RGB거리' 문제의 트리버전이라고 보면 된다. 그러니 저걸 안풀었다면 저것부터 풀어보자. 1149를 못푸는데 이 문제를 풀 수 있을 가능성은 없다.   우선 간소화해서 생각해보기 위해, 이 문제를 1149번 문제처럼 트리긴한데 그냥 1차원이었다고 생.. 2024. 5. 23.
[자바] 백준 2981 - 검문 (java) 목차문제 : boj2981  필요 알고리즘유클리드 호제법, 정수론gcd를 구해서 풀 수 있는 문제이다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  N개의 숫자를 M으로 나누었을 때, 나머지가 모두 같게 되는 2이상의 M을 모두 찾는 문제이다. 이 경우, 우선 가장 큰 M만 찾으면 된다. 왜냐면 나머지 M은 가장 큰 M의 약수들을 찾아주면 되기 때문이다. 그럼 문제는 N개의 숫자를 M으로 나누었을 때 나머지가 모두 같게 .. 2024. 5. 22.
[세미나] git 기본 이해 git의 기본적인 이해를 위한 세미나 입니다. 목적은 이하와 같았습니다. 1. 기본적인 git 명령어를 이해해서 IDE가 달라지더라도 동일하게 사용할 수 있도록 하는 것2. 현재 git을 사용해 개발중인 상황에서 충돌 등이 발생했을 때, 현재 상황을 머리속으로 그려볼 수 있도록 이해하는 것    라이브코딩으로 진행된 세미나이다보니 ppt로는 설명에 한계가 있습니다. 라이브코딩으로 진행했던 내용까지 포함된 글은 '링크'에 있습니다.  ppt의 우측 상단 '새 탭에서 보기' 를 누르시면 크게보거나 pdf를 다운받아 보실 수 있습니다. 2024. 5. 22.
Git 기본 이해 - 기본 명령어의 이해, 충돌 해결, github 목차   최근 git 기초에 대한 세미나 한 자료를 기반으로 글을 작성했습니다. 이 글의 목적은 아래와 같습니다.1. 기본적인 git 명령어를 이해해서 IDE가 달라지더라도 동일하게 사용할 수 있도록 하는 것2. 현재 git을 사용해 개발중인 상황에서 충돌 등이 발생했을 때, 현재 상황을 머리속으로 그려볼 수 있도록 이해하는 것   각 ppt 하단 부가 설명은 리눅스에서 CLI 환경에서 git을 사용했습니다. 이하 리눅스 명령어는 아셔야 이해할 수 있을 것 같습니다.ls : 현재 폴더내에 파일 뭐 있는지 확인vi : 그냥 메모장 같은거 실행해서 txt 파일 편집했다고 보시면 됩니다.cat : txt 파일 내용 확인했다고 보시면 됩니다.   알아두면 좋을만한 기본 명령어 외 세부적인 옵션들은 작성하지 않았.. 2024. 5. 22.
[자바] 백준 27650 - 마법박스 (java) 목차문제 : boj27650  필요 알고리즘매개 변수 탐색 (이분 탐색), 에라토스테네스의 체문제에서 제시된 것의 규칙을 찾아, 20번 내에 물어볼 수 있는 방법을 찾아야 한다.※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.  풀이  처음엔 무지성으로 단순히 최대 500만개짜리 배열 만들어두고, 2부터 시작하면서 물어보고 1이라고 하면 2의 배수 전부 체크하는 식으로 생각했었다. 문제는 인터랙티브 문제라 틀렸습니다라고 안떴다는 점이.. 2024. 5. 17.
[디자인 패턴의 아름다움] 6. 생성 디자인 패턴 스터디 메인 페이지목차- ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다.- 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다.  CHAPTER 06. 생성 디자인 패턴생성 디자인 패턴은 주로 객체 생성 문제를 해결하고 복잡한 생성 프로세스를 캡슐화하며 객체의 생성 코드와 사용 코드를 분리한다.싱글턴 패턴 : 전역적으로 유일한 객체를 생성하는 데 사용팩터리 패턴 : 같은 상위 클래스나 인터페이스를 상속하는 하위 클래스와 같이 비록 유형은 다르지만 서로 관련되어 있는 객체를 주어진 객체 타입에 맞게 생성하는 데 사용빌더 패턴 : 복잡한 객체를 생성하는 데.. 2024. 5. 17.