FickleBoBo

[BaekJoon] 20366번 - 같이 눈사람 만들래? [Java][C++]

문제 링크 1. 문제 풀이 $N$ 개의 눈덩이 중 $4$ 개를 사용하여 두 눈사람의 키 차이가 최소가 되게 해야 한다. 정렬과 투 포인터를 활용하면 해결할 수 있는데 먼저 정렬을 통해 눈덩이가 오름차순이 되게 해준다. 이후 2중 반복문을 통해 한 쪽 눈사람을 만들 두 눈덩이를 고른 후 고른 두 눈덩이의 사이에 있는 눈덩이로 반대쪽 눈사람을 ...

[BaekJoon] 1963번 - 소수 경로 [Java][C++]

문제 링크 1. 문제 풀이 주어진 4자리 소수에 대해 특정 자리를 바꾸는 과정을 반복해서 다음 소수를 만들어야 하는 문제다. 이때 바꾸는 과정도 전부 소수여야 한다. 에라토스테네스의 체를 활용해 4자리 소수를 전부 구한 후 BFS를 통해 각 자리를 바꿨을 때, 소수이면 계속 탐색하고 아니면 탐색하지 않는 방향으로 해결할 수 있다. 2....

[BaekJoon] 1654번 - 랜선 자르기 [Java][C++]

문제 링크 1. 문제 풀이 주어진 $K$ 개의 랜선을 적절한 길이로 잘라서 같은 길이를 갖는 $N$ 개 이상의 랜선을 만들어야 하는 문제다. 자를 길이를 길이 $1$ 부터 쭉 브루트 포스로 접근하면 탐색 범위가 너무 넓어서 시간 초과가 발생하기 때문에 효율적인 접근이 필요한데 매개 변수 이분 탐색을 활용하면 해결할 수 있다. $N$ 개 이...

[BaekJoon] 16401번 - 과자 나눠주기 [Java][C++]

문제 링크 1. 문제 풀이 주어진 $N$ 개의 과자를 $M$ 명의 조카에게 나눠줄 때, 조카 1명에게 줄 수 있는 막대 과자의 최대 길이를 구해야 하는 문제다. 이때 과자 길이는 동일해야 하며 합칠 수 없다. 해당 문제는 매개 변수 이분 탐색을 활용하면 해결할 수 있는데 과자 길이의 하한과 상한의 중간 값을 기준으로 과자를 나눠줄 수 있는...