문제

정답
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문 종료
}
- 문자열의 모든 문자를 출력하면 반복 종료
🔚 전체 실행 흐름 요약
- 문자열 입력
- 문자열 길이 계산
- for문으로 인덱스 0부터 끝까지 반복
- charAt()으로 문자 하나씩 출력
💡 핵심 포인트 정리
| 문법 | 의미 |
| length() | 문자열 길이 |
| charAt(i) | i번째 문자 |
| for | 반복 |
| println() | 출력 + 줄바꿈 |
⚠️ 주의사항
❌ 이렇게 쓰면 오류 발생
a.charAt(a.length());
- 인덱스 초과 (StringIndexOutOfBoundsException)
✔️ 항상
i < a.length()
- 이 형태로 사용해야 함
'컴퓨터 > 프로그래머스' 카테고리의 다른 글
| [Java] 프로그래머스 코딩테스트 연습 / 문자열 섞기 (0) | 2026.01.20 |
|---|---|
| [Java] 프로그래머스 코딩테스트 연습 / 문자열 겹쳐쓰기 (0) | 2026.01.19 |
| [Java] 프로그래머스 코딩테스트 연습 / 문자열 붙여서 출력하기 (1) | 2026.01.17 |
| [Java] 프로그래머스 코딩테스트 연습 / 덧셈식 출력하기 (0) | 2026.01.17 |
| [Java] 프로그래머스 코딩테스트 연습 / 특수문자 출력하기 (0) | 2026.01.17 |