FickleBoBo
Preview Image

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

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

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

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

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

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

[백준] 1644번 - 소수의 연속합 [Java][C++]

문제 링크 1. 문제 풀이 주어진 수를 소수의 연속된 구간의 합으로 나타낼 수 있는 경우의 수를 구하는 문제로 에라토스테네스의 체를 활용해 소수들을 얻은 후 투 포인터를 적용하면 간단하게 해결할 수 있다. 2. 코드 1. 에라토스테네스의 체 + 투 포인터 [Java] $N = 1$ 이면 소수 리스트가 아예 비어있어서 예외 처리를 해줬다...

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

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

[백준] 12891번 - DNA 비밀번호 [Java][C++]

문제 링크 1. 문제 풀이 주어진 문자열에 대해 고정된 길이의 임의의 구간이 비밀번호의 조건을 만족하는 경우의 수를 구하는 문제다. 조건은 구간이 각 문자를 특정 개수 이상 포함해야 한다. 문자열과 구간의 최대 길이가 $1,000,000$ 이라는 점에서 $O(N^2)$ 풀이는 시간 초과가 발생하는데 슬라이딩 윈도우를 활용하면 해결할 수 있다. ...