설명
영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,
특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요.입력
첫 줄에 길이가 100을 넘지 않는 문자열이 주어집니다.출력
첫 줄에 알파벳만 뒤집힌 문자열을 출력합니다.
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void solution(String input) {
char[] result = input.toCharArray();
ArrayList<Integer> units = new ArrayList<>();//map으로 해볼까...
for(int count =0; count < input.length(); count++) {
if((65<=result[count] && result[count] <=90) || ( 97<= result[count] && result[count] <=122)) {
units.add(count);
} // if
} //for
int size = units.size()-1;
for(int count=0; count < units.size()/2 ; count ++) {
char tmp;
tmp = result[units.get(count)];
result[units.get(count)] = result[units.get(size)];
result[units.get(size)]= tmp;
size--;
}// for
System.out.println(result);
} // solution
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
solution(input);
} // main
}// end class
- 입력 받고
- 특수문자는 거르고 영어만 뒤집는다.
-> 특수문자의 위치를 구별할 줄 알아야 한다. 아스키 코드로 구별
-> 영어의 위치도 알아야한다.
-> 위치를 저장하고 해당 위치에 맞게끔 교환해준다.- 출력
깨달은 점: Character.isAlphabetic() 알파벳인지 아닌지 구분하는 메소드..
if else를 통해서 좌값과 우값에 대해 특수문자인지를 판별해서 아니면 한칸씩 옆으로 가게 만든다. 둘다 아니라면 교환해주고 lt와 rt의 인덱스가 교차되는 시점에 반복문 중단한다..
고집부려서 오래동안 고민해가지구 푼 것인데 너무 간단하게 그리고 잡다하지 않게 되어있는 답지 보고 혼이 나갔다. 학창시절부터 못푸는 문제 붙잡고 머리 쥐어뜯는거 좋아하던지라.. 재미는 있다.
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void solution(String input ,char chInput) {
String chElement = String.valueOf(chInput);
while(true){
if((input.contains(chElement)) || input.contains(chElement.toUpperCase())) {
int index = input.toLowerCase().indexOf(chInput);
StringBuffer bf = new StringBuffer(input);
bf.deleteCharAt(index);
input = bf.toString();
} else {
System.out.println(input);
break;
}
}// while
} // solution
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.next();
char chInput = sc.next().charAt(0);
solution(input,chInput);
} // main
}// end class
문제를 잘못 읽어서 다르게 풀었다. 나는 입력받은 문자열 중에 두번째 입력받은 문자를 제거하는 식을 내버렸네..