컴퓨터/프로그래머스

[Java] 프로그래머스 코딩테스트 연습 / 문자열 돌리기

peridott 2026. 1. 18. 12:12

문제


정답

import java.util.Scanner;

public class Solution {
	public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
        String a = sc.next();
        
        for(int i = 0; i < a.length(); i++) {
        	System.out.println(a.charAt(i));
        }
    }
}

개념설명

1. import java.util.Scanner;

import java.util.Scanner;

✔️ 의미

  • Scanner 클래스를 사용하기 위해 import
  • 키보드 입력을 받기 위한 준비

 

2. 클래스 선언

public class Solution {

✔️ 의미

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

 

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

public static void main(String[] args) {

✔️ 의미

  • 자바 프로그램이 실행될 때 가장 먼저 호출되는 메서드
키워드 의미
public JVM이 접근 가능
static 객체 생성 없이 실행
void 반환값 없음
main 고정된 메서드 이름
String[] args 실행 인자

 

4. Scanner 객체 생성

Scanner sc = new Scanner(System.in);

✔️ 의미

  • 키보드 입력을 받기 위한 Scanner 객체 생성
  • System.in → 표준 입력(키보드)

 

5. 문자열 입력 받기정답

import java.util.Scanner;

public class Solution {
 public static void main(String[] args) {
     Scanner sc = new Scanner(System.in);
        String a = sc.next();
        for(int i = 0; i < a.length(); i++) {
         System.out.println(a.charAt(i));
        }
    }
}

개념설명

1. import java.util.Scanner;

import java.util.Scanner;

✔️ 의미

  • Scanner 클래스를 사용하기 위해 import
  • 키보드 입력을 받기 위한 준비

 

2. 클래스 선언

public class Solution {

✔️ 의미

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

 

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

public static void main(String[] args) {

✔️ 의미

  • 자바 프로그램이 실행될 때 가장 먼저 호출되는 메서드
키워드  의미
public JVM이 접근 가능
static  객체 생성 없이 실행
void  반환값 없음
main  고정된 메서드 이름
String[] args  실행 인자

 

4. Scanner 객체 생성

Scanner sc = new Scanner(System.in);

✔️ 의미

  • 키보드 입력을 받기 위한 Scanner 객체 생성
  • System.in → 표준 입력(키보드)

 

5. 문자열 입력 받기

String a = sc.next();

✔️ 의미

  • 키보드에서 문자열 입력
  • 입력된 값을 문자열 변수 a에 저장

✔️ next() 특징

특징 설명
공백 기준 공백 전까지만 입력
타입 String 반환

 

6. for문 시작 (문자 하나씩 반복)

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

✔️ 의미

  • 문자열 a의 모든 문자를 하나씩 처리하기 위한 반복문

✔️ for문 구성 요소 분석

for(초기식; 조건식; 증감식)
부분 의미
int i = 0 인덱스 시작
i < a.length() 문자열 길이 미만까지
i++ 인덱스 1씩 증가

 

7. a.length() 설명

a.length()

✔️ 의미

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

✔️ 예시

a = "hello"
a.length() → 5
인덱스 문자
0 h
1 e
2 l
3 l
4 o

그래서 조건은

i < a.length()

👉 마지막 인덱스 초과 방지

 

8. 문자 하나 출력 (charAt)

System.out.prinln(a.charAt(i));

✔️ 의미

  • 문자열 a의 i번째 문자 하나를 출력

 

9. charAt(i) 상세 설명

a.charAt(i)

✔️ 의미

  • 문자열에서 특정 위치의 문자 하나 반환
  • 반환  타입 : char

✔️ 예시

a = "JAVA"

a.charAt(0) → 'J'
a.charAt(1) → 'A'
a.charAt(2) → 'V'
a.charAt(3) → 'A'

 

10. println() 의미

System.out.println(...)

✔️ 의미

  • 출력 후 자동 줄바꿈
  • 그래서 결과가 한 줄에 한 글자씩 출력됨

 

11. for문 종료

}
  • 문자열의 모든 문자를 출력하면 반복 종료

🔚 전체 실행 흐름 요약

  1. 문자열 입력
  2. 문자열 길이 계산
  3. for문으로 인덱스 0부터 끝까지 반복
  4. charAt()으로 문자 하나씩 출력

💡 핵심 포인트 정리

문법 의미
length() 문자열 길이
charAt(i) i번째 문자
for 반복
println() 출력 + 줄바꿈

⚠️ 주의사항

❌ 이렇게 쓰면 오류 발생

a.charAt(a.length());
  • 인덱스 초과 (StringIndexOutOfBoundsException)

✔️ 항상

i < a.length()
  • 이 형태로 사용해야 함