티스토리 뷰

반응형

 

문제

대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램을 작성하세요.

 

입력

첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다.

문자열은 영어 알파벳으로만 구성되어 있습니다.

 

출력

첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력합니다.

 

 

 

예시 입력

StuDY

예시 출력

sTUdy

 

 

 

 

 

문제 풀이

 

[첫번째 풀이]

import java.util.Scanner;
  
public class Main {
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.next();

    for (char c : input.toCharArray()) {
      if (Character.isLowerCase(c)) {
        System.out.print(String.valueOf(c).toUpperCase());
      } else {
        System.out.print(String.valueOf(c).toLowerCase());
      }
    }
  }
}

(Time 163ms / Memory 27MB)

import java.util.Scanner;
  
public class Main {
  public void Solution(String str) {
    for (char c : str.toCharArray()) {
      if (Character.isLowerCase(c)) {
        System.out.print(String.valueOf(c).toUpperCase());
      } else {
        System.out.print(String.valueOf(c).toLowerCase());
      }
    }
  }
  
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.next();
    
    Main main = new Main();
    main.Solution(input);
  }
}

(Time 147ms / Memory 27MB)

 

[두번째 풀이]

import java.util.Scanner;
  
public class Main {
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.next();

    for (char c : input.toCharArray()) {
        int i = (int) c;

        if (i <= 90) {
            System.out.print((char) (i + 32));
        } else {
            System.out.print((char) (i - 32));
        }
    }
  }
}

(Time 150ms / Memory 27MB)

import java.util.Scanner;
  
public class Main {
  public void Solution(String str) {
    for (char c : str.toCharArray()) {
        int i = (int) c;
        if (i <= 90) {
            System.out.print((char) (i + 32));
        } else {
            System.out.print((char) (i - 32));
        }
    }
  }
  
  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input = in.next();

    Main main = new Main();
    main.Solution(input);
  }
}

(Time 153ms / Memory 27MB)

 

 

 

- Character 클래스를 이용해 대문자인지 혹은 소문자인지 판단 후 true면 소문자로, false면 대문자로 개행없이 콘솔에 출력시켜주었다.

- 첫번째 풀이처럼 풀었을 때는 함수를 작성 후 변수를 넘겨 풀었을 때 더 시간이 단축되었다.

- 두번째 풀이처럼 ASCII 코드로 대문자인, 소문자인지 비교하는 방법도 있다고 해서 풀어보았다.

- 문자를 int형으로 변환하면 65~90이 대문자 알파벳, 97~122가 소문자 알파벳이므로 32를 +-하여 변환할 수 있다.

 

 

 

 

 

반응형

'Java > Coding Test' 카테고리의 다른 글

[코딩테스트] 중복문자제거  (0) 2022.02.25
[코딩테스트] 특정 문자 뒤집기  (0) 2022.02.22
[코딩테스트] 단어 뒤집기  (0) 2022.02.22
[코딩테스트] 문장 속 단어  (0) 2022.02.22
[코딩테스트] 문자 찾기  (0) 2022.02.21
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함