
👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
강의 : 풀이 과정
class Main {
public String solution(String str) {
String answer = "";
for(char x : str.toCharArray()){
if(Character.isLowerCase(x)) {
answer += Character.toUpperCase(x);
} else {
answer += Character.toLowerCase(x);
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
System.out.print(T.solution(str));
}
}
// 아스키 코드로 풀어보기
class Main {
public String solution (String str) {
String answer = "";
for(char x : str.toCharArray()) {
if( x>= 97 && x <= 122) {
answer += (char)(x-32);
} else {
answer += (char)(x+32);
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
System.out.print(T.solution(str));
}
}
핵심 키워드
Character.isLowerCase(), toUpperCase(), toLowerCase()
쌤의 풀이과정에 적혀있는 내용 중 중요한 메서드가 있다.
하나씩 풀어보자
1. .toCharArray()
해당 메소드는 문자열을 한 글자씩 쪼개어 char차입의 배열에 집어넣어 반환해 주는 메서드이다.
단점으론 배열을 생성하여 처리 하기 때문에 속도가 느리다
사진 속 예제를 보면 String 문자열로 선언된 str문자열변수의 값을
하나씩 분리하여 charArr 이라는 문자 배열에 대입해 준다
for 문을 통해 해당 인덱스 값에 들어간 값들을 출력해 주는 예제이다.
비슷한 메소드는 charAt()가 있다.
2. Character.isLowerCase(매개변수)
해당 메소드는 입력받은 인자가 영문 소문자인지 판단하여 true 또는 False값을 리턴한다.
3. Character.toLowerCase(매개변수) toUpperCase(매개변수)
toLowerCase(매개변수) : 해당 메서드는 입력받은 인자를 소문자로 변경해 준다
toUpperCase(매개변수) : 해당 메서드는 입력받은 인자를 대문자로 변경해 준다
solution class 풀이
class Main {
public String solution(String str) {
String answer = "";
for(char x : str.toCharArray()){
if(Character.isLowerCase(x)) {
answer += Character.toUpperCase(x);
} else {
answer += Character.toLowerCase(x);
}
}
return answer;
}
for - each 문을 통한 반복문 실행
str(입력받은 String 객체)를 .toCharArray() 메서드를 진행하여 한 글자씩 분리한다
분리된 글자를 x라고 칭한다.
If (만약에) x (인입된 문자)가 Character.isLowerCase (소문자인지 판단)하여 참일 경우
x의 문자를 Character.toUpperCase 하여 대문자로 변환한 뒤 answer에 대입하여라
else (If문의 내용이 아니라면)
x의 문자를 Character.toLowerCase 소문자로 변환한 뒤 answer에 대입하여라
그리고 answer의 값을 리턴한다.
나의 풀이 과정
import java.util.*;
public class chapter_2 {
public String solution(String str){
String answer = "";
for (int i = 0; i < str.length(); i++) {
char input2 = str.charAt(i);
if(input2 >= 65 && input2 <= 90){
input2+=32;
System.out.print(input2);
}
else if (input2 >= 97 && input2 <= 122){
input2-=32;
System.out.print(input2);
}
}
return answer;
}
public static void main(String[] args) {
chapter_2 T = new chapter_2();
Scanner in = new Scanner(System.in);
String input1 = in.next();
System.out.println(T.solution(input1));
}
}
입력된 String 타입의 문자열을 for문을 통해 변환 및 char형태로 바꾼다
반복 횟수는 입력된 문자열의 길이만큼 진행한다
str.charAt(i); // 입력된 str의 문자열 값을 charAt를 통해 하나씩 input2라는 char배열에 입력해 준다(char 자료형으로 변경)
If (만약에) input2의 값이 아스키코드인 65 이상, 90 미만이라면 (대문자 확인하는 조건)
input2의 아스키코드값에 + 32를 더한 뒤 대입한다
그리고 Input2의 값을 출력한다
else if (if문 조건이 아니라면) input2의 값이 아스키코드로 97 이상 122 미만일 경우(소문자 확인 조건)
input2의 아스키코드 값에 -32를 하여 대입 한 다
그리고 input2의 값을 출력한다
그 값을 answer 값에 리턴해 준다.
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Aʟɢᴏʀɪᴛʜᴍ' 카테고리의 다른 글
Algorithm - 중복문자제거 (1) | 2023.10.10 |
---|---|
Algorithm - 특정 문자 뒤집기 (0) | 2023.09.24 |
Algorithm - 단어 뒤집기 (1) | 2023.09.24 |
Algorithm - 가장 긴 단어 찾기 (1) | 2023.09.21 |
Algorithm - 문자열 안에 특정 문자 갯수 알아내기 (0) | 2023.09.18 |