본문 바로가기
알고리즘/Java 코딩 테스트 준비

[Java]대소문자 변환 문제

by Dev dreamer 2023. 1. 21.

1.문자열입력받는다(알파벳)

2.대문자 -> 소문자 // 소문자 -> 대문자 변환해라

 

입력값

kONG

출력값

Kong

 

강의 듣기전 푼 코드

 

푼 과정에서의 생각

 

1. 문자를 받을 Scanner 를 Main 에 만들고

 

2. 받은 문자를 변수에 담아 Solution 에 전달한다.

 

3. 전달한 값을 구분해서 담을 array 를 선언하고

 

4. for 문으로 문자열의 길이만큼 돌리고

알파벳의 아스키코드가 대문자보다 소문자가 큰 것을 이용했으며 이때 기준점을 소문자 알파벳중 가장 작은 a 를 기준으로 구분해준다.

 

5. 그 기준으로 선언해 놓은 배열에 문자열을 charAt으로 잘라서 해당 위치의 문자열을 조건에 맞게 변경해준다.

 

6. 이 변경된 값을 return 값에 담기위해 향상된 for문을 통해 배열의 문자 값들을 이어서 문자열을 완성해준다.

 

 

 

 

import java.util.Scanner;

public class Main {
	public String solution(String str) {


		char[] a = new char[str.length()];
		
		String answer="";
				
		for(int i = 0; i<str.length(); i++) {
			
			if(str.charAt(i)<'a') {
				a[i]=str.toLowerCase().charAt(i);
			}else {
				a[i]=str.toUpperCase().charAt(i);
			}	
		}
		for(char x : a) {
			answer=answer+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.println(T.solution(str));
		

	}
}

 

 

강사님 코드

알아야할 코드들!

1. 문자열이 아닌 문자 자체를 구분해 주는 기능을 갖은 코드!

isLowerCase(문자) 해당 문자가 소문자면 참 아니면 거짓을 반환.

2.문자 자체를 대소문자로 각각 바꿔주는 기능을 갖은 코드!

Character.toUpperCase(문자) 대문자로 바뀜.

Character.toLowerCase(문자) 소문자로 바뀜.

 

훨씬 간단하게 풀 수 있었음.

 

 

아스키번호 로 푸는 방법(강사님 방법)

 

알파벳 대문자 65~90 알파벳 소문자 97~122

대소문자의 차이는 32차이가 난다.

 

이 32 차이를 이용해서 대소문자 변경이 가능하다!

 

문자가 숫자와 비교하면 바로 아스키코드로 비교가 되는데 97과 122 사이가 참이라면

그 문자는 소문자일 것이다. 이때 소문자에 32를 빼주면 해당 알파벳의 대문자가 나오게 된다.

 

 

 

 

 

 

 

 

코테 관련해서 많이 부담스러웠는데 강의를 통해 푸는 방법을 배우니까 재밌는것 같습니다.

출처 : 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 대시보드 - 인프런 | 강의 (inflearn.com)

댓글