1. 문제 설명, 제한 사항, 입출력 예시

2. 아이디어
- 입력받은 문자열 → 한 문자씩 쪼개서
아스키 코드 값 65-90(대문자) 97-122(소문자) 기준으로 바꾸기대소문자 확인 후
- 대문자 → 소문자, 소문자 → 대문자로 변환
1. next() vs nextLine()
- next(): 공백(스페이스, 개행, 탭) 이전까지 한 단어를 읽는다.
String first = scanner.next(); // 첫 번째 단어 읽기
String second = scanner.next(); // 두 번째 단어 읽기
System.out.println("첫 번째 입력: " + first);
System.out.println("두 번째 입력: " + second);
Input)
Hello World
Output)
첫 번째 입력: Hello
두 번째 입력: World
next(): Hello
next(): World
- nextLine(): 공백을 포함한 문장을 입력 받을 수 있고 개행(enter) 전까지 한 줄 전체를 읽는다.
- next() 직후 nextLine() 사용 시 반드시 버퍼 비우기 필요
- next()는 공백 전까지만 읽고 남아 있는 줄바꿈 문자(\n)는 버퍼에 남아있는 상태이다.
- 따라서 next(0 직후에 nextLine()를 쓰면 버퍼에 남아있는 줄바꿈 문자를 읽게 되고 빈 문자열을 반환하게 된다.
- ⇒ nextLine()을 한 번 더 호출하여 버퍼 비워준다.
2. 대소문자 메서드
- Character.isUpperCase(char ch)
- ch(문자)가 대문자인지 확인
- 반환 타입 : boolean
- 예시 : Character.isUpperCase('A') → true
- Character.isLowerCase(char ch)
- ch(문자)가 소문자인지 확인
- 반환 타입 : boolean
- 예시 : Character.isLowerCase('b') → true
- Character.toUpperCase(char ch)
- 문자를 대문자로 변환
- 반환 타입 : char
- 예시 : Character.toUpperCase('c') → 'C’
- Character.toLowerCase(char ch)
- 문자를 소문자로 변환
- 반환 타입 : char
- 예시 : Character.toLowerCase('D') → 'd’
3. 문자열을 한 글자씩 쪼개는 방법
- charAt(int index)
- String 문자열에서 특정 인덱스 위치의 문자를 char 타입으로 변환
- 특정 인덱스의 글자만 가져오고 싶을 때 사용
- toCharArray()
- String 문자열을 char형 배열로 반환
- 모든 글자를 순회하고 싶을 때 사용
- = charAt(i) + for문
4. 문자열 누적
- String answer = “” : 빈 문자열을 선언해둔다.
- answer += c : 문자열에 += 연산자를 통해 문자를 하나씩 덧붙여 새로운 문자열을 만든다.
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 i = 0; i<a.length(); i++){
char c = a.charAt(i);
if(Character.isUpperCase(c)){
answer += Character.toLowerCase(c);
}else{
answer += Character.toUpperCase(c);
}
}
System.out.println(answer);
}
}
Share article