컴퓨터/프로그래머스

[Java] 프로그래머스 코딩테스트 연습 / 대소문자 바꿔서 출력하기

peridott 2026. 1. 16. 16:35

문제


정답

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);
    }
}

개념설명

1. import.java.util.Scanner;

import.java.util.Scanner;

✔️ 의미

  • Scanner 클래스를 사용하겠다고 선언
  • 키보드를 입력을 받기 위해 필요

 

2. 클래스 선언

public class Solution {

✔️ 의미

  • Solution이라는 클래스 정의
  • 자바 프로그램은 반드시 클래스 내부에서 실행

 

3. main 메서드 (프로그램 시작점)

pubic static void main(String[] args) {

✔️ 의미

  • 프로그램 실행 시 가장 먼저 호출되는 메서드
요소 의미
pulic JVM 접근 허용
static 객체 생성 없이 실행
void 반환값  없음
main 고정 이름
String[] args 실행 인자

 

4. Scanner 객체 생성

Scanner sc = new Scanner(System.in);

✔️ 의미

  • 키보드 입력을 받을 준비

 

5. 문자열 입력 받기

String a = sc.next();

✔️ 의미

  • 키보드로 입력한 값을 문자열(String)로 받아
  • 변수 a로 저장

✔️ 특징

  • 공백 전까지만 입력 받음

 

6. 결과 문자열 초기화

String answer = "";

✔️ 의미

  • 결과를 저장할 빈 문자열 생성

✔️ 왜 빈 문자열?

  • 문자열은 null이 아니라 연결 가능한 초기값이 필요
  • 이후 반복문에서 문자를 하나씩 붙이기 위함

 

7. for 반복문

for(int i = 0; i < a.length(); i++) {

✔️ 의미

  • 문자열 a의 길이만큼 반복

✔️ for문 구조 분석

for(초기식; 조건식; 증감식)

1. 초기식

int i = 0;
  • 문자열 인덱스는 0부터 시작

2. 조건식

i < a.length();

✔️ a.length()

  • 문자열 a의 문자 개수 반환

3. 증감식

i++
  • 다음 문자로 이동

 

8. 문자 하나 꺼내기

char c = a.charAt(i);

✔️ 의미

  • 문자열 a에서
  • i번째 문자를 꺼내
  • char 타입 변수 c에 저장

✔️ 예시

a = "ABC"
i = 1
a.charAt(1) → 'b'
  • char는 한 글자만 저장하는 타입

 

9. 대문자인지 검사

if(Character.isUpperCase(c)) {

✔️ 의미

  • 문자 c가 대문자면 true

✔️ Character 클래스

  • 문자 관련 유틸리티 클래스
  • char를 검사/변환할 때 사용

✔️ 예시

'A' → true
'a' → false

 

10. 대문자 → 소문자 변환

answer += Character.toLowerCase(c);

✔️ 의미

  • 대문자를 소문자로 변환
  • 결과를 answer에 추가

 

11. else (소문자일 경우)

} else {

✔️ 의미

  • 문자가 대문자가 아닐 때
  • 즉, 소문자일 때 실행

 

12. 소문자 대문자 변환

answer += Character.toUpperCase(c);

✔️ 의미

  • 소문자를 대문자로 변환
  • 결과 문자열에 추가

 

13. 반복 종료 후 출력

System.out.println(answer);

✔️ 의미

  • 변환이 끝난 문자열 출력
  • 줄바꿈 포함

🔚 전체 실행 흐름 요약

  1. 프로그램 시작
  2. 문자열 입력
  3. 결과 문자열 준비
  4. 문자열 길이만큼 반복
  5. 문자 하나씩 검사
  6. 대소문자 변환
  7. 결과 출력

💡 핵심 포인트 정리

문법 의미
length() 문자열 길이
charAt(i) i번째 문자
char 문자 타입
Character.isUpperCase() 대문자 검사
toLowerCase() 소문자 변환
toUpperCase() 대문자 변환
+= 문자열 이어 붙이기

💡 꿀팁

answer += ...
  • 반복문 안에서는 비효율적
  • 문자열이 많아지면 성능 저하

✔️ 실무 / 고급 버전

StringBuilder sb = new StringBuilder();

sb.append(character.toLowerCase(c));
System.out.println(sb.toString());