문자열
[BOJ/JAVA] 1701번: Cubeditor
1701번: Cubeditorhttps://www.acmicpc.net/problem/1701키워드어떤 문자열 내에서 부분 문자열이 두 번 이상 나오는 문자열을 찾는 기능이러한 부분 문자열 중에서 가장 길이가 긴 것을 구하는 프로그램구현kmp 알고리즘을 이용하여 구현한다.문자열 알고리즘용어 정리 |S| 문자열 S의 길이 S = “abcde” 라면 |S| = 5 S[i] (0 ≤ i < |S|) 문자열 S의 i번 글자 S = “abcde” 라면 S[3] = d S[i…j] 문자열 S[i] 부터 S[j] 까지 부분 문자열 S = “abcde” 라면 S[1…3] = bcd S[…a] 문자열 S[0] 부터 S[a] 까지 부분 문자열 S = “abcde” 라면 S[…3] = abcd S[b…] 문자열 S[b] 부..
[BOJ/JAVA] 1599번: 민식어
1599번: 민식어https://www.acmicpc.net/problem/1599키워드민식어는 a b k d e g h i l m n ng o p r s t u w y의 순서ng는 n과 o사이에 오는 하나의 알파벳민식어의 순서대로 정렬하는 프로그램구현다음 3가지를 구현하면 된다.민식어의 우선순위를 처리하는 방법ng를 판단하는 방법문자열을 특정 조건으로 정렬하는 방법 1. 민식어의 우선순위 처리하는 방법final static Map minsikMap민식어는 a b k d e g h i l m n ng o p r s t u w y의 순서대로 우선순위를 가진다.따라서 해당 문자가 몇 번째 우선순위인지 map에 저장해두도록 하자ng는 문자열이므로 -라는 문자로 치환하여 저장하자.2. ng를 판단하는 방법민식어..
[BOJ/JAVA] 17609번: 회문
17609번: 회문https://www.acmicpc.net/problem/17609키워드회문(回文) 또는 팰린드롬(palindrome)은 앞 뒤 방향으로 볼 때 같은 순서의 문자로 구성된 문자열회문이 아니지만 한 문자를 삭제하여 회문으로 만들 수 있는 문자열이라면 우리는 이런 문자열을 “유사회문”(pseudo palindrome)문자열 그 자체로 회문이면 0, 유사회문이면 1, 그 외는 2를 출력구현문자열이 회문인지 판단하는 알고리즘문자열이 유사회문인지 판단하는 알고리즘그 외는 둘 다 아님 → 2출력 유사회문인지 판단하는 알고리즘문자 하나를 삭제해서 회문이 되는지 판단하기 위해 2개의 포인터를 사용한다.firstIndex: 문자열 맨앞에서 중앙까지 가는 포인터lastIndex: 문자열 맨뒤에서 중앙까지..
[BOJ/JAVA] 1958번: LCS 3
1958번: LCS 3https://www.acmicpc.net/problem/1958키워드LCS(Longest Common Subsequence)문자열 3개의 LCS를 구하는 프로그램구현LCS가 무엇인가?[BOJ/JAVA] 5582번: 공통 부분 문자열5582번: 공통 부분 문자열 5582번: 공통 부분 문자열 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들 www.acmicpc.net 키워드 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 구현 대표적인 LCS문제. 두 문자열 중 공통 부분 문..
문자열 합치기
도입JAVA에서 문자열을 합치는 방법에는 여러가지가 있다.각 방법에 대해 시간을 비교해보자.공통 테스트용 문자열다음 문자열을 계속해서 연결할 것이다.final static String test = "test";+연산자 // + 연산자를 이용한 문자열 합치기 public static void plusOperation(int loop) { String result = ""; long startTime = System.currentTimeMillis(); for (int i = 0; i < loop; i++) { result += test; } long endTime = System.currentTimeMillis(); System.out.println("plusOperation::걸린 시간" + (endTi..
[BOJ/JAVA] 9935번: 문자열 폭발
https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Stack; public class java_9935 { public ..
[BOJ/JAVA] 5052번: 전화번호 목록
https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.HashMap; public class java_5052 { ..
[BOJ/JAVA] 1474번: 밑 줄
https://www.acmicpc.net/problem/1474 1474번: 밑 줄 세준이는 N개의 영어 단어를 이용해 길이가 M인 새로운 단어를 만들려고 한다. 새로운 단어는 N개의 단어를 순서대로 이어 붙이고, 각 단어의 사이에 _을 넣어서 만든다. 이렇게 만든 새로운 단어 www.acmicpc.net import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; public class java_1474 { public ..