본문 바로가기

전체 글1068

[자바] 백준 1990 - 소수인팰린드롬 (java) 문제 : boj1990 필요 알고리즘 개념 소수 판정, 에라토스테네스의 체 팰린드롬도 판정해야하지만, 그보다 먼저 소수 판정을 할 수 있어야 한다. 에라토스테네스의 체를 알고 있어야 1억 이하의 소수를 효율적으로 구할 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. b 이하의 소수를 모두 구한다. 에라토스테네스의 체를 사용해 구해주면 된다. 이 때 sqrt(b) 까지만 확인해주면 된다. (에라토스테네스의 체 혹.. 2022. 11. 10.
[자바] 백준 6322 - 직각 삼각형의 두 변 (java) 문제 : boj6322 필요 알고리즘 개념 피타고라스의 정리, 기하학 피타고라스의 정리를 알면 풀 수 있다! 문제에서도 공식이 주어지니 사실상 구현문제라고 봐도 될 것 같다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 경우를 나눠보면 아래와 같다. 1. c가 -1일 경우 c^2 = a^2 + b^2 이므로, c = sqrt(a^2 + b^2) 이다(sqrt는 제곱근을 뜻한다.). a와 b는 항상 양수로 주어질 것이므로 불.. 2022. 11. 10.
[자바] 백준 2166 - 다각형의 면적 (java) 문제 : boj2166 필요 알고리즘 개념 기하학 신발끈 공식을 사용해 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 솔브닥 그래프에 기하학이 폭-삭 상태인데, 왠지 동그란게 이쁠 것 같으니 기하학을 공부해보기로 했다. 이 문제는 기하학의 사칙연산이라 불리는 CCW를 다양한 블로그 보면서 공부하고 있던 중에 만난 신발끈 공식으로 풀 수 있는 문제였다. 이하 노션에 개인 공부용으로 정리중인 벡터의 외적 .. 2022. 11. 9.
[자바] 백준 17502 - 클레어와 팰린드롬 (java) 문제 : boj17502 필요 알고리즘 개념 구현, 문자열 문자열의 각 character를 파악하고, 문제의 규칙을 이해해서 구현해줘야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 팰린드롬은 앞에서 읽으나 뒤에서 읽으나 동일해야 한다. 그 말인즉, 문자열의 양 끝에서 포인터를 두고 중간으로 점점 오면서 두 포인터가 가르키는 문자가 전부 동일해야 함을 의미한다. 아래의 경우 '3'과 '4'가 다르므로 팰린드롬이 아님을.. 2022. 11. 7.
[자바] 백준 3724 - 표 (java) 문제 : boj3724 필요 알고리즘 개념 큰 수 연산, 브루트포스 문제에서 제시된 방식대로 모든 경우의수를 다 살펴보면 된다. 다만 엄청나게 큰 수 연산이 들어간.. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 주의점은 N과 M의 순서가 상당히 헷갈리게 들어오니 조심하자. 이 문제의 경우 모든 경우를 직접 해보면 된다. 즉, 각 열의 모든 수를 직접 다 곱해보고 비교하면 된다! 그러기 위해서는 대략 (2^31)^1000 .. 2022. 11. 7.
[자바] 백준 13985 - Equality (java) 문제 : boj13985 필요 알고리즘 개념 문자열 파싱 문자열 파싱 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 A + B = C 형태의 입력에서, A, B, C를 뽑아낼 수 있다면 풀 수 있다. 심지어 1개의 문자로만 각 숫자가 주어진다고 했으므로 어려울게 없다. character 자체로 판단해도 되고, 어차피 공백으로 구분되어 있으므로 공백을 기준으로 잘라줘도 된다. 코드 : github import jav.. 2022. 11. 7.
[자바] 백준 14268 - 회사 문화 2 (java) 문제 : boj14268 필요 알고리즘 개념 lazy propagation을 적용한 세그먼트 트리 혹은 펜윅 트리 세그먼트 트리 + lazy propagation 혹은 range update가 가능한 펜윅 트리를 알고 있어야 풀 수 있다. 오일러 경로 테크닉, DFS 알면 생각하기 좋은데, 바로 생각 못할만한 개념은 아니다(내 경우에도 처음 오일러 경로 테크닉을 접했을 때 풀고보니 저런 알고리즘이었다.). 어떠한 노드에서 그 아래로 내려가는 경로들을 1차원으로 펴서 연속된 구간을 생성하는 개념이다. 구할 때 DFS를 사용한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 .. 2022. 11. 4.
[자바] 백준 25932 - Find the Twins (java) 문제 : boj25932 필요 알고리즘 개념 구현 입출력 연습문제에 가깝다. 그래도 문자열에 대한 연산을 좀 쓸줄 알아야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 풀게된 계기는 나온지 얼마 안된 문제라 정답률이 100%였다. 100%로 냅두긴 불-편 했으므로 정답률을 떨어뜨리기 위해 풀었다(?). (팁 : 백준에서는 그냥 틀리기만 해서는 정답 비율에 영향을 안끼친다. 틀린 후 맞아야 성공률이 내려간다!) 문제에서.. 2022. 11. 4.
[자바] 백준 19542 - 전단지 돌리기 (java) 문제 : boj19542 필요 알고리즘 개념 깊이 우선 탐색 (dfs), 트리 트리를 dfs로 적절한 방식으로 탐색하는 문제이다. 기본적으로 dfs에 대한 이해가 필요하다. 트리에 대한 이해도 있으면 생각하기 더 좋다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 요즘 바빠서 브론즈문제로 스트릭만 유지하고 있었다. 현재 405일이라 깨기는 너무 아깝다 ㅋㅋ 이제 좀 바쁜게 풀려서 다시 문제들좀 풀어보려니 오랜만이라 그런지 .. 2022. 11. 3.
[자바] 백준 1669 - 멍멍이 쓰다듬기 (java) 문제 : boj1669 필요 알고리즘 개념 수학 수학적 사고가 필요한 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 얼핏 어떻게 구해야할지 난감할 수 있다. 구해야하는건 '최소'의 일수라는걸 시작으로 생각해보면 좀 더 쉽게 생각해볼 수 있다. 첫째 날과 마지막 날은 항상 1cm 여야 한다. 그렇다면 가장 빠르게 cm를 증가시키면서 차이를 좁혀야 '최소'일수가 가능하다. 가장 빠르게 cm를 증가시키는 방법은, 중간 .. 2022. 11. 2.