개인 공부/프로그래머스
[프로그래머스] 대소문자 바꿔서 출력하기
개발 기록
2024. 1. 8. 16:29
문제
내 풀이
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
// 전체 글자수 확인
int len = a.length();
int count = 0;
글자수만큼 while 동작
while(--len >=0) {
// while문 안에서 글자를 차례대로 하나씩 가져옴
String al = a.substring(count, count+1);;
// 가져온 글자의 대문자와 비교한 후 같으면 소문자, 다르면 대문자를 출력
if(al.equals(al.toUpperCase())) {
System.out.print(al.toLowerCase());
}
else {
System.out.print(al.toUpperCase());
}
count++;
}
}
}
내 로직
- 전체 글자수 확인
- 글자수만큼 while 동작
- while문 안에서 글자를 차례대로 하나씩 가져옴
- 가져온 글자의 대문자와 비교한 후 같으면 소문자, 다르면 대문자를 출력
다른 사람 풀이1
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
String answer = "";
//Stack <Character> stack = new Stack <> ();
for(Character c : a.toCharArray()){
if(Character.isUpperCase(c)){
//stack.push(Character.toLowerCase(c));
answer += Character.toLowerCase(c);
}
else if(Character.isLowerCase(c)){
//stack.push(Character.toUpperCase(c));
answer += Character.toUpperCase(c);
}
}
System.out.println(answer);
}
}
풀이1 로직
- 향상된 for문 이용
- 입력한 글자의 대문자와 같으면 String형 answer에 소문자로 글자 추가,
입력한 글자의 소문자와 같으면 answer에 대문자로 글자 추가
느낀점
toUpperCase()와 toLowerCase()만 알고 있었는데
isUpperCase()와 is LowerCase()가 있다는 것을 알게 되었다.
* toUpperCase(a) / toLowerCase(a) : a를 대문자/소문자로 바꿔준다
* isUpperCase(a) / isLowerCase(a) : a가 대문자/소문자인지 확인한다
다른 사람 풀이2
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
for(int i=0; i<a.length(); i++) {
char c = a.charAt(i);
if(Character.isUpperCase(c)) {
System.out.print((char)(c+32));
}
else {
System.out.print((char)(c-32));
}
}
}
}
풀이2 로직
- for문 이용
- 대문자면 소문자로 변경(c+32) , 대문자가 아니면 대문자로 변경(c-32)
- c+32 / c-32 : 아스키코드를 이용한 것이다
느낀점
아스키코드를 이렇게 이용하는 방법이 있음을 알게되었다
다른 사람 풀이3
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
String answer = "";
for(int x : a.toCharArray()){
if(x>=97 && x<=122)answer += (char)(x-32); else answer += (char)(x+32);
}
System.out.print(answer);
}
}
풀이3 로직
- 향상된 for문 사용
- 아스키코드를 비교하여 97보다 크거나 같고 122보다 작거나 같으면 -32, 아니라면 +32
느낀점
코드 길이가 정말 짧다
기본적인 아스키코드의 숫자를 알고 이용할 줄 알아야 할듯
풀이2의 업그레이드 버전같음