대소문자 변환
대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램 작성
■ 문제 풀이
1) 입력 설명
- 첫 줄에 문자열이 입력
- 문자열의 길이는 100을 넘지 않는다.
- 문자열은 알파벳으로만 구성
2) 출력
- 첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력
3) 테스트
STuDY -> sTUdy
4) 문제 풀이
- 첫번째 solution은 아스키코드 값을 이용하여 대문자인 경우에는 소문자로, 소문자인 경우에는 대문자로 코드값을 계산하여 변경
- 두번째 solution는 Character 클래스의 isLowerCase()/isUpperCase() 함수를 이용하여 문자열에 포함되어 있는 문자의 대소문자를 판별하였고, toLowerCase()/ toUpperCase() 함수를 이용하여 대문자를 소문자로, 소문자를 대문자로 변경
import java.util.Scanner;
public class Converter {
/**
* 아스키코드값을 이용
*/
public String solution(String str) {
char[] chars = str.toCharArray();
/**
* 1. 65<= char <= 90 대문자
* 2. 97<= char <= 122 소문자
*
* 대소문자 사이의 차이 : 32
*/
for (int i = 0; i < chars.length; i++) {
// 대문자를 소문자로 변경
if (65 <= chars[i] && chars[i] <= 90) {
chars[i] = (char) (chars[i] + 32);
/**
* continue의 경우 현재 조건문에서 빠져나온다.
* break문의 경우 현재 반복문에서 빠져나온다.
*/
continue;
}
/**
* continue를 하지 않으면 위의 과정에서 대문자가 소문자로 변경되었기 때문에
* 아래의 조건문을 만족하여 소문자에서 대문자로 변경하는 프로세스가 진행된다.
*/
// 소문자를 대문자로
if (97 <= chars[i] && chars[i] <= 122) {
chars[i] = (char) (chars[i] - 32);
continue;
}
}
return new String(chars);
}
/**
* Character 클래스의 메서드를 이용
*/
public String solution2(String str){
String answer = "";
for (char c : str.toCharArray()) {
if (Character.isLowerCase(c)){
answer += Character.toUpperCase(c);
}else {
answer += Character.toLowerCase(c);
}
}
return answer;
}
public static void main(String[] args) {
Converter converter = new Converter();
Scanner in = new Scanner(System.in);
String str = in.next();
System.out.println(converter.solution(str));
System.out.println(converter.solution2(str));
}
}
'CodingTest Practice' 카테고리의 다른 글
[인프런] 단어 뒤집기 (0) | 2022.03.30 |
---|---|
[인프런] 문장 속 단어 (0) | 2022.03.29 |
[인프런] 문자 찾기 - 문자열 (0) | 2022.03.28 |
[프로그래머스] K번째수 (0) | 2022.03.28 |
[프로그래머스] 전화번호 목록 (0) | 2022.03.27 |