설명
소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요.중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다.입력
첫 줄에 문자열이 입력됩니다. 문자열의 길이는 100을 넘지 않는다.출력
첫 줄에 중복문자가 제거된 문자열을 출력합니다.
import java.util.Scanner;
public class Main {
public static void solution(String input) {
char[] result = input.toCharArray();
int i = 0;
int j = i+1;
while(true) {
if(i == result.length) {
// System.out.println(String.valueOf(result));
break;
} else if(i<result.length && j<result.length) {
if(result[i] == result[j]) {
StringBuffer bf = new StringBuffer(String.valueOf(result));
bf.deleteCharAt(j);
result = bf.toString().toCharArray();
} else {
j++;
}// if else
} else {
i++;
j = i+1;
}// else if
}//while
System.out.println(String.valueOf(result));
} // solution
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
solution(input);
} // main
}// end class
알고리즘
0. 입력받는다.
1. 지정한 글자와 다음글자를 비교한다
-while문과 if 문을 이용해서
- 같으면 지워줌
- 같은 글자가 아니면 다다음 글자와 비교한다.
- 끝까지 갔는데 아니면 지정 글자를 바꿔준다.
- 지정 글자도 끝에 도착하면 출력
설명
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요.
단 회문을 검사할 때 대소문자를 구분하지 않습니다.입력
첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.출력
첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.
import java.util.Scanner;
public class Main {
public static String solution(String input) {
input = input.toLowerCase();
StringBuffer bf = new StringBuffer(input);
if(input.equals(bf.reverse().toString())) {
return "YES";
}else {
return "NO";
}// if - else
} // solution
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
System.out.println(solution(input));
} // main
}// end class
알고리즘
0. 입력받는다.
1. 소문자로 만들고 뒤집어준다.
2. 원래 문자열과 비교한다.
3. 출력
설명
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.
문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요.
단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.
알파벳 이외의 문자들의 무시합니다.입력
첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.출력
첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.
import java.util.Scanner;
public class Main {
public static String solution(String input) {
input = input.toLowerCase();
StringBuffer bf = new StringBuffer(input);
for(int i =0;;) {
char[] result =input.toCharArray();
if(i == input.length())break;// if - break
if(Character.isAlphabetic(result[i])) {
i++;
} else {
input = bf.deleteCharAt(i).toString();
} //if -else
}// if
if(input.equals(bf.reverse().toString())) {
return "YES";
}else {
return "NO";
}// if - else
} // solution
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
System.out.println(solution(input));
} // main
}// end class
- 입력받는다.
- 알파벳 이외의 문자들의 무시합니다.
- 배열로 순회하며 알파벳인지 아닌지 알아보고 지운다.
- 소문자로 만들고 뒤집어준다.
- 원래 문자열과 비교한다.
- 출력
설명
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다.
만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205이 됩니다.
추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.입력
첫 줄에 숫자가 섞인 문자열이 주어집니다. 문자열의 길이는 100을 넘지 않습니다.출력
첫 줄에 자연수를 출력합니다.
import java.util.Scanner;
public class Main {
public static int solution(String input) {
StringBuffer bf = new StringBuffer(input);
for(int i =0;;) {
char[] result =input.toCharArray();
if(i == input.length())break;// if - break
if(Character.isDigit(result[i])) {
i++;
} else {
input = bf.deleteCharAt(i).toString();
} //if -else
}// for
return Integer.parseInt(input);
} // solution
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
System.out.println(solution(input));
} // main
}// end class
- 입력 받는다.
- 순회하면서 입력 값에 숫자 여부를 파악
- 숫자가 아니면 지운다.
- 앞자리에 0이 오는직 식별 후 출력