Develop
[프로그래머스] 대소문자 바꿔서 출력하기 본문
문제
내 풀이
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의 업그레이드 버전같음
'개인 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 문자열 돌리기 (0) | 2024.01.10 |
---|---|
[프로그래머스] 홀짝 구분하기 (1) | 2024.01.09 |
[프로그래머스] 특수문자 출력하기 (0) | 2024.01.09 |
[프로그래머스] 덧셈식 출력하기 (1) | 2024.01.08 |
[프로그래머스] 문자열 반복해서 출력하기 - repeat (0) | 2024.01.05 |