[백준] 11056번 - 두 부분 문자열 [Java][C++]
문제 링크 1. 문제 풀이 $A$ 와 $B$ 를 부분 문자열로 갖는 $S$ 의 최소 길이를 찾아야 하는 문제다. 해당 문제는 LCS 알고리즘을 활용하면 해결할 수 있는데 $A$ 와 $B$ 의 LCS의 길이를 $len$ 이라 할 때, $A\ 의\ 길이 + B\ 의\ 길이 - len$ 으로 $S$ 의 길이를 구할 수 있다. $A$ 와 $B$ 를 ...
문제 링크 1. 문제 풀이 $A$ 와 $B$ 를 부분 문자열로 갖는 $S$ 의 최소 길이를 찾아야 하는 문제다. 해당 문제는 LCS 알고리즘을 활용하면 해결할 수 있는데 $A$ 와 $B$ 의 LCS의 길이를 $len$ 이라 할 때, $A\ 의\ 길이 + B\ 의\ 길이 - len$ 으로 $S$ 의 길이를 구할 수 있다. $A$ 와 $B$ 를 ...
문제 링크 1. 문제 풀이 주어진 $N$ 개의 수를 정렬하는 문제로 수의 개수가 최대 $10,000,000$ 개로 매우 많은데 수의 범위는 작다는 점에서 카운팅 배열을 활용하면 효율적으로 해결할 수 있다. $1$ 부터 최대 $10000$ 까지 원소들의 등장 횟수를 카운팅한 다음 각 숫자의 등장 횟수만큼 출력하는 방식으로 해결했다. 2. ...
문제 링크 1. 문제 풀이 $N$ 이 최대 $500,000$ 이고 각 숫자가 $-10,000,000 \sim 10,000,000$ 일 때, $M$ 개의 숫자에 대해 등장 횟수를 출력하는 문제다. 가장 간단하게는 맵을 활용해 등장 횟수를 판단할 수 있고, 주어진 숫자 카드를 정렬한 후 Lower Bound, Upper Bound 이분 탐색을 통해...
문제 링크 1. 문제 풀이 $N$ 이 최대 $500,000$ 이고 각 숫자가 $-10,000,000 \sim 10,000,000$ 일 때, $M$ 개의 숫자에 대해 등장한 적이 있는지 여부를 출력하는 문제다. 가장 간단하게는 집합을 활용해 등장 여부를 판단할 수 있고, 주어진 숫자 카드를 정렬한 후 이분 탐색을 통해 등장했는지 판단하는 방식으로...
문제 링크 1. 문제 풀이 주어진 문자열에 대해 전화를 거는데 걸리는 최소 시간을 구하는 문제로 각 알파벳 별로 몇 초가 걸리는지 미리 배열에 저장한 후 조회하는 방식으로 해결했다. 2. 코드 1. 구현 [Java] import java.io.*; public class Main { public static void main(...
문제 링크 1. 문제 풀이 $42$ 로 나눈 겹치지 않는 나머지의 개수를 구하는 문제로 방문 체크 배열을 활용해서 해결할 수도 있고 집합을 활용해도 해결할 수 있다. 2. 코드 1. 사칙연산 [Java] import java.io.*; public class Main { public static void main(String[...
문제 링크 1. 문제 풀이 세 점이 주어졌을 때, 직사각형을 만들 수 있는 남은 한 점의 좌표를 구하는 문제로 간단하게는 각 좌표가 두 번씩 등장해야 한다는 점을 활용한 조건문으로 해결할 수 있다. 다른 방법은 비트 XOR 연산자를 활용하면 되는데 비트 XOR 연산자는 두 비트가 다르면 $1$, 같으면 $0$ 을 반환한다. 따라서 $x$, $...
문제 링크 1. 문제 풀이 주어진 문자열에서 크로아티아 알파벳을 구분해서 알파벳의 개수를 세야 하는 문제다. 크로아티아 알파벳을 찾으면 현재 바라보는 인덱스를 이동시키는 방식으로 크로아티아 알파벳의 개수를 세줬다. 2. 코드 1. 구현 [Java] import java.io.*; public class Main { public...
문제 링크 1. 문제 풀이 총 평점을 구하는 문제로 각 표에 맞춰 문자열을 실수 타입으로 변환하면 간단하게 해결할 수 있다. 2. 코드 1. 구현 [Java] import java.io.*; import java.util.*; public class Main { public static void main(String[] arg...
문제 링크 1. 문제 풀이 세 막대가 주어지고 막대의 길이를 줄이는 것만 가능할 때 세 막대로 만들 수 있는 삼각형의 둘레의 최댓값을 구해야 하는 문제다. 삼각형은 가장 긴 변의 길이가 다른 두 변의 길이의 합보다 작아야 한다는 점을 이용하면 된다. 가장 긴 변의 길이와 나머지 두 변의 길이의 합을 구하고 가장 긴 변이 나머지 두 변의 길이의...