
이 문제는 다른 것보다 반복되는 규칙을 찾아야하는 귀찮은 문제.
- 문자수 홀수이면 같은 문자를 더해 짝수로 만든 다음
- 각 문자의 위치가 홀수일 때, answer1로
- 각 문자의 위치가 짝수일 때, answer2로 위치하게 한다.
홀수인 문자열을 짝수의 문자열로 바꾼 다음에 풀면 되는 문제
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int i = 0; i < T; i++) {
String s = sc.next();
String answer1 = "";
String answer2 = "";
s = s.length() % 2 == 0 ? s : s + s;
for (int j = 1; j <= s.length(); j++) {
if (j % 2 != 0) {
answer1 += s.charAt(j-1);
} else {
answer2 += s.charAt(j-1);
}
}
System.out.println(answer1);
System.out.println(answer2);
}
}
}
문제가 굉장히 문자열을 잘 가지고 놀 줄 알아야 풀 수 있는 문제......
문자열을 잘 가지고 노는 사람이 되어야 하는데....
생각만하면 쉬운데, 구현이 어렵네......
근데 다른 사람의 해설 풀이를 봤는데, 정규표현식으로 문제를 풀면 간단한 것이었다. 정규표현식에 대해 공부를 해보기!!!!
import java.util.*;
class Solution {
public String solution(String new_id) {
String answer = "";
new_id = new_id.toLowerCase();
List<Character> charArray = new ArrayList<>();
for(int i = 0; i < new_id.length(); i++) {
char c = new_id.charAt(i);
if(Character.isAlphabetic(c)||Character.isDigit(c)||c=='-'|| c=='_' || c=='.') {
charArray.add(c);
}
}
int count = 0;
new_id ="";
for(char c : charArray){
new_id +=c;
}
while(new_id.contains("..")){
new_id = new_id.replace("..", ".");
}
new_id = new_id.charAt(0)=='.' ? new_id.substring(1) : new_id;
new_id = new_id.equals("") ? "a" : new_id;
new_id = new_id.contains(" ") ? new_id.replace(" ", "a") : new_id;
new_id = new_id.length()>=16 ? new_id.substring(0,15) : new_id;
new_id = new_id.charAt(new_id.length()-1) == '.' ? new_id.substring(0,new_id.length()-1) : new_id;
while(new_id.length()<=2){
new_id += new_id.charAt(new_id.length()-1);
}
answer = new_id;
return answer;
}
}