FickleBoBo

[백준] 17218번 - 비밀번호 만들기 [Java][C++]

문제 링크 1. 문제 풀이 두 문자열의 가장 긴 부분 문자열을 구하는 문제로 LCS를 활용하면 된다. 이때 LCS의 길이가 아니라 실제 LCS를 출력해야 하는데 실제 LCS는 LCS를 구할 때 활용한 dp 테이블을 역추적하는 방식으로 구할 수 있다. 최종적으로 구하면 실제 LCS의 역순으로 조회되므로 이를 뒤집으면 실제 LCS를 구할 수 있다....

Preview Image

[백준] 15894번 - 수학은 체육과목 입니다 [Java][C++]

문제 링크 1. 문제 풀이 주어진 도형의 실선으로 이루어진 둘레의 길이를 구하는 문제다. 주어진 도형의 가장 아랫부분의 정사각형이 $n$ 개일 경우, 위에서 바라봤을 때 보이는 실선의 길이와 아래에서 바라봤을 때 보이는 실선의 길이, 왼쪽에서 바라봤을 때 보이는 실선의 길이와 오른쪽에서 바라봤을 때 보이는 실선의 길이는 모두 동일하며 $n$ 이...

[백준] 1193번 - 분수찾기 [Java][C++]

문제 링크 1. 문제 풀이 무한히 큰 배열의 분수들에 대해 지그재그로 순서를 매겼을 때, $X$ 번째 분수를 구하는 문제로 반복문을 활용해 분자가 $1$ 이면 분모가 $1$ 이 될 때까지 좌하 방향으로 순회하고, 분모가 $1$ 이면 우상 방향으로 순회하도록 했다. 이때 끝에 도달하면 우로 한 칸 이동하거나 아래로 한 칸 이동하도록 해줬다. ...

[백준] 11653번 - 소인수분해 [Java][C++]

문제 링크 1. 문제 풀이 주어진 정수를 소인수분해하는 문제로 소인수분해는 $2$ 이상의 소수로 주어진 수를 반복적으로 나누어서 $1$ 이 될 때까지 반복하면 된다. 이때 반복적으로 나누는 과정 덕분에 합성수로 나누게 되어 잘못 소인수분해를 할 일은 없는데 해당 합성수를 구성하는 소수로 이전에 이미 나누었을 것이기 때문이다. 따라서 나누는 수를...