읽기 전에 알아두면 좋아요
아래 개념이 익숙하면 본문을 바로 읽으세요. 낯선 개념만 링크에서 복습하면 됩니다.
- 문자열 알고리즘 기초: 순회·문자 판별·대소문자 변환·숫자 추출문자열의 각 문자를 순서대로 읽고 위치를 확인하는 방법을 복습합니다. 대문자 판별 조건과 문자 개수 누적을 확인합니다.
- 기초 구현 패턴: 조건·정수 계산·순회·상태 갱신변수에 값을 담고 조건에 따라 합·개수·최솟값을 갱신하는 기초부터 확인합니다. 순회 중 필요한 상태를 정하고 갱신하는 기본 패턴입니다.
개념과 예제는 실행하지 않아도 읽을 수 있습니다. 내 컴퓨터·터미널에서 직접 실행하는 과정은 선택 실습입니다.
과정 위치와 선택 복습 안내
과정 위치: 문자열 기초 · 문제
과정 위치는 이 글이 속한 묶음입니다. 이 단계의 모든 개념을 먼저 읽을 필요는 없습니다. 위에 연결한 개념 중 낯선 내용만 복습하세요. 문제의 조건·상태·갱신 순서는 익숙한 언어로 설명하면 됩니다.
JavaScript로 문법·실행 복습하기 (선택)
개념 글의 코드는 JavaScript 예시입니다. 문제 화면에서는 JavaScript·Python·Java·C++·C# 중 익숙한 언어의 함수를 작성하세요. 본문의 Node.js 입출력 예시는 로컬 실행을 위한 별도 안내입니다.
대문자 찾기 문제에서는 문자열의 어떤 문자 개수를 구하나요?
문자열에서 영문 대문자가 몇 개인지 구하는 문제입니다. 문자열·문자 범위·조건문의 기본을 준비하고, 아래 입력·반환 계약을 확인해 직접 풀어보세요.
적용 조건·범위: 문자열 길이 제한은 100입니다. 숫자·기호를 넣는 검사는 코드의 판별 방식을 확인하는 추가 검사이며, 문제의 입력 조건을 새로 정의하는 것은 아닙니다.
공식 문서 참고: 관련 개념: MDN 문자열 크기 비교의 UTF-16 순서
문제
길이가 100을 넘지 않는 문자열 한 개가 주어집니다. 문자열의 각 문자를 확인해 알파벳 대문자가 몇 개인지 구한 뒤, 그 개수를 출력하는 문제입니다.
입력은 첫 줄의 문자열 하나이며 출력은 대문자 개수 하나입니다. 예제 문자열에서는 K, T, G가 대문자이므로 결과는 3입니다.
예제 입력
KoreaTimeGood
예제 출력
3
직접 풀어보기
먼저 선택한 언어의 입력·반환 계약에 맞춰 작성해 보세요. 힌트 받기와 정답과 비교하기는 코드를 실행하지 않는 AI 분석입니다. 해답·해설은 아래에서 필요할 때 펼칠 수 있습니다.
AI 힌트
코드를 실행한 채점 결과가 아닌 AI의 코드 분석입니다.
해답·해설 보기
function solution(text) {
let count = 0;
for (const ch of text) if (ch >= 'A' && ch <= 'Z') count++;
return count;
}
solution(text)에 문자열을 전달하고 대문자 개수를 숫자로 반환합니다. 입력은 문제의 유효한 범위를 만족합니다. 표준 입력·출력 없이 결과를 반환하세요.
def solution(text):
count = 0
for ch in text:
if 'A' <= ch <= 'Z': count += 1
return count
solution(text)에 문자열을 전달하고 대문자 개수를 int로 반환합니다. 입력은 문제의 유효한 범위를 만족합니다. 표준 입력·출력 없이 결과를 반환하세요.
import java.util.*;
class Solution {
public int solution(String text) {
int count = 0;
for (int i = 0; i < text.length(); i++) {
char ch = text.charAt(i);
if (ch >= 'A' && ch <= 'Z') count++;
}
return count;
}
}
Solution.solution(String text)는 대문자 개수를 int로 반환합니다. 입력은 문제의 유효한 범위를 만족합니다. 표준 입력·출력 없이 결과를 반환하세요.
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <limits>
#include <memory>
#include <numeric>
#include <queue>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
using namespace std;
int solution(const string & text) {
int count = 0;
for (char ch : text) if (ch >= 'A' && ch <= 'Z') count++;
return count;
}
solution(const string& text)는 대문자 개수를 int로 반환합니다. 입력은 문제의 유효한 범위를 만족합니다. 표준 입력·출력 없이 결과를 반환하세요.
using System;
using System.Collections.Generic;
using System.Text;
public class Solution {
public int Solve(string text) {
int count = 0;
foreach(char ch in text) if (ch >= 'A' && ch <= 'Z') count++;
return count;
}
}
Solution.Solve(string text)는 대문자 개수를 int로 반환합니다. 입력은 문제의 유효한 범위를 만족합니다. 표준 입력·출력 없이 결과를 반환하세요.
원자료와 확인 범위
2026-10-12에 제공된 학습 자료 섹션 1. 기본문제풀이.pdf의 11쪽 ‘대문자 찾기’와 문제 조건·예제를 대조했습니다. 같은 ZIP의 해당 문제 TXT는 풀이 코드 자료입니다. 이 자료의 최초 출제 원문·저자·공개 배포 주소까지 확인한 것은 아닙니다.
이번 대조는 원자료의 문제 조건과 예제 확인입니다. 이 글의 전체 코드를 새로 실행하거나 공식 채점에 제출한 결과를 뜻하지 않습니다. 아래 예제·자가 확인 항목은 직접 실행해 기대 출력과 비교하는 기준입니다.
문자를 하나씩 확인하며 A부터 Z 사이에 있을 때만 개수를 늘립니다.
알고리즘 설계

count를 0으로 시작하고 문자열 전체를 한 번 순회합니다. 각 문자를 대문자 알파벳 범위와 비교하므로 소문자·숫자·기호를 대문자로 세지 않습니다.
char === char.toUpperCase()만으로 판단하면 숫자와 기호도 조건을 만족합니다. 알파벳 대문자만 찾으려면 범위를 직접 비교하는 편이 분명합니다.

다음 완성 코드는 Node.js의 표준 입력에서 한 줄을 읽습니다.
변수·반복문·문자 비교를 알고 Node.js가 준비되었다면 아래 전체 코드를 solution.cjs로 저장합니다. input.txt에는 KoreaTimeGood 한 줄을 적습니다. Bash·명령 프롬프트의 node solution.cjs < input.txt 또는 PowerShell의 cmd /c “node solution.cjs < input.txt”로 파일을 표준 입력에 보내면 기대값은 3입니다. 입력을 모두 소문자로 바꾸면 0이어야 합니다. 숫자를 대문자로 세지 않는지는 문제 외 문자가 들어가는 확장 실습에서 따로 확인합니다.
const fs = require('fs');
const input = fs.readFileSync(0, 'utf8').trim();
let count = 0;
for (const char of input) {
if (char >= 'A' && char <= 'Z') {
count += 1;
}
}
console.log(count);
KoreaTimeGood에서는 K, T, G를 만날 때 count가 차례로 1, 2, 3이 됩니다. 소문자를 지날 때는 값이 유지됩니다.
복잡도와 검증
문자열 길이를 N이라 하면 시간 복잡도는 O(N)입니다. 입력 문자열을 제외한 추가 공간은 O(1)이며, 입력 저장까지 포함하면 O(N)입니다.
| 입력 | 출력 | 확인 항목 |
|---|---|---|
| KoreaTimeGood | 3 | 대소문자 혼합 |
| koreatimegood | 0 | 모두 소문자 |
| ABC | 3 | 모두 대문자 |
문자열 길이 제한은 100입니다. 숫자·기호를 넣는 검사는 코드의 판별 방식을 확인하는 추가 검사이며, 문제의 입력 조건을 새로 정의하는 것은 아닙니다.
이 문제를 푼 뒤 확인하기
대문자가 없는 문자열과 대문자만 있는 문자열을 각각 세어 보세요.
본문의 예제와 이 반례를 직접 실행해 예상 출력과 비교하고, 결과가 다르면 입력 조건과 반복 범위를 다시 확인하세요.
이 글이 도움이 되었나요?
이어서 공부하기
체크포인트: 해설을 가리고 다시 풀고, 경계 입력을 하나 바꾸어 예상 결과와 실제 결과를 비교하세요. 같은 문자·찾는 문자 없음·홀짝 길이를 확인하고 결과의 등장 순서를 설명하세요.
다음 추천 · 문제: 대문자로 통일 풀이
권장 순서는 학습 가이드와 같습니다. 다른 순서는 접힌 참고 목록에서 확인할 수 있습니다. 읽음 표시는 숙달이나 채점 결과가 아닙니다.
원래 과정 목록 순서 (선택)
읽음 기록
읽음 — / 전체 58개 · 필수 58개
새 글 받아보기
RSS 리더에서 BlogFlow의 새 글을 확인할 수 있습니다.