Dev Hyeri

◖코딩 테스트◗▬▬▬▬▬▬▬▬▬/백준

[백준](2024)대소문자 바꾸기(설명/코드/정답)

_hyeri 2024. 2. 19. 14:44

 

문제 링크 : https://www.acmicpc.net/problem/2744

 

 

난이도
알고리즘 
브론즈5 구현, 문자열

 

 

대소문자 바꾸기

 

1. 요구 사항 이해

시간, 메모리 제한 : 1초 / 128MB

 

입력받은 최대 100자 문자열을 대문자는 소문자로 소문자는 대문자로 변환

 

 

2. 설계/검증 

대소문자 구분

대소문자 변환

- 아스키코드의 숫자 차이를 이용

System.out.println((char)('A' + 32)); // a
System.out.println((char)('a' - 32)); // A

 

시간 복잡도  최악의 경우  공간 복잡도
O(N) -- O(N)

 

 

함수화

static void changeCase(String word){
	
    if ("대문자인 경우"){
    		// 소문자로 변경
    }else("소문자인 경우"){
    		// 대문자로 변경 
    }
   

}

 

 

 

 

3. 정상 코드

import java.util.*;

public class Main {


    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in); // Scanner 객체 생성
        String word = scanner.next(); // 사용자로부터 입력 받은 문자열 저장
        System.out.println(changeCase(word)); // changeCase 매서드 호출 및 결과 출력
    }

    // 대소문자 바꾸기 매서드 changeCase
    static String changeCase(String w) {

        char[] charArray = w.toCharArray(); // 입력받은 문자열을 char 배열로 변환

        for (int i = 0; i < w.length();  i++) {
            char ch = charArray[i];
            // 대문자인 경우 소문자로 변경
            if('A' <= ch && ch <='Z'){
                charArray[i] = (char) (ch - 'A' + 'a');
            // 소문자인 경우 대문자로 변경
            } else if('a' <= ch && ch <= 'z'){
                charArray[i] = (char) (ch - 'a' + 'A');
            }
        }
        // 변경된 char 배열을 다시 String으로 변환하여 객체를 반환
        return new String(charArray);
    }
}

 

 

4. 추가 정리

 

 

toCharArray 

문자열을 새로운 char 배열로 변환