Information Security Study
[SWEA] 17938. 문자열 세 개 본문
[SWEA] 17938. 문자열 세 개
문제 링크
https://swexpertacademy.com/main/main.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 요약
LCS(Longest Common Subsequence) 값이 주어진 세 문자열 AA, BB, CC를 생성하는 문제다.
문제 풀이
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt(); // 테스트 케이스 수
for (int t = 1; t <= T; t++) {
int X = sc.nextInt(); // LCS(A, B)
int Y = sc.nextInt(); // LCS(B, C)
int Z = sc.nextInt(); // LCS(C, A)
// A, B, C를 구성
StringBuilder A = new StringBuilder();
StringBuilder B = new StringBuilder();
StringBuilder C = new StringBuilder();
// A는 X개의 '1'로 구성
for (int i = 0; i < X; i++) A.append('1');
while (A.length() < Math.max(X, Y) + Z) A.append('0'); // 길이 맞추기
// B는 Y개의 '1'을 포함하며 A와 일부 겹침
for (int i = 0; i < Y; i++) B.append('1');
while (B.length() < A.length()) B.append('0');
// C는 Z개의 '1'을 포함하며 B와 일부 겹침
for (int i = 0; i < Z; i++) C.append('1');
while (C.length() < A.length()) C.append('0');
// 출력
System.out.printf("#%d %s %s %s\n", t, A, B, C);
}
sc.close();
}
}
핵심 로직
문자열의 기본 구성
- AA는 XX개의 '1'로 구성
- BB는 YY개의 '1'로 구성
- CC는 ZZ개의 '1'로 구성
공통 부분 보장
- AA, BB, CC는 동일한 길이로 맞추면서 공통되는 '1'의 부분을 조정하여 LCSLCS를 만족한다.
길이 확장
- 필요 시 '0'으로 채워 길이를 확장하여 XX, YY, ZZ가 동시에 만족되도록 설계한다.
'Programming > JAVA' 카테고리의 다른 글
[프로그래머스][Level 1][HashMap] 성격 유형 검사하기 (0) | 2025.01.02 |
---|---|
[SWEA] 17299. 최소 덧셈 (0) | 2024.11.16 |
[SWEA][S/W 문제해결 기본] 1206. 1일차-view (0) | 2024.11.14 |
[프로그래머스] 모의고사(level 1, 완전탐색) (0) | 2024.11.13 |
[프로그래머스] 최소직사각형(level1, 완전탐색) (1) | 2024.11.12 |