대문자를 소문자로 소문자를 대문자로 바꾸는 문제였다.
//내코드
import java.util.Scanner;
class Main {
public String answer(String str) {
String answer = "";
try {
char[] chs = str.toCharArray();
if (chs.length >= 100) {
throw new Exception();
}
for (int i = 0; i < chs.length; i++) {
if (chs[i] >= 97 && chs[i] <= 122) { // 소문자
chs[i] = (char) ((int) chs[i] - 32);// 소문자->대문자
} else if (chs[i] >= 65 && chs[i] <= 90) {// 대문자
chs[i] = (char) ((int) chs[i] + 32);// 대문자-소문자
}
}
for (int i = 0; i < chs.length; i++) {
answer += chs[i];
}
} catch (Exception e) {
System.out.println("문자열 길이가 100을초과합니다.");
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
sc.close();
str = T.answer(str);
System.out.print(str);
return;
}
}
나는 처음에 아스키코드를 사용해야겠다고 생각했고 사용하니 정답은 도출되긴 하였다.
문자열을 char배열로 만들었고 해당 char배열의 값을 아스키코드 값과 비교하여 해당 문자가 소문자인지 대문자인지 판별했다.
//인프런 코드
import java.util.Scanner;
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));
}
}
//인프런 코드 아스키코드 활용
import java.util.Scanner;
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));
}
}
인프런 강의 코드를 보니 내 코드와 많이 비교되었다.
내 코드의 비효율적인 점은 for문을 사용하지않은 것과
대소문자를 변환할때 굳이 아스키 코드를 이용할 필요가 없다는 점이였다.
Character에서 .toUpperCase(char x)와 .toLowerCas(char x)를 이미 제공하기 때문이다.
따라서 향상된 for문과 Character가 가진 함수를 잘 이용하자!
자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의
자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성
www.inflearn.com
'2022 > 코딩테스트' 카테고리의 다른 글
[인프런] 자바 알고리즘 문제풀이 멘토링_12 (0) | 2022.08.31 |
---|---|
인프런 코딩테스트 강의 메모 - 유효한 팰린드롬 (0) | 2022.07.20 |
인프런 코딩테스트 강의 메모 - 회문문자열 (0) | 2022.07.14 |
인프런 코딩테스트 강의 메모 - 단어뒤집기 (0) | 2022.07.08 |