대문자 찾기 풀이

··설명 약 3분·작성: 해비·블로그 소개

읽기 전에 알아두면 좋아요

아래 개념이 익숙하면 본문을 바로 읽으세요. 낯선 개념만 링크에서 복습하면 됩니다.

개념과 예제는 실행하지 않아도 읽을 수 있습니다. 내 컴퓨터·터미널에서 직접 실행하는 과정은 선택 실습입니다.

과정 위치와 선택 복습 안내

과정 위치: 문자열 기초 · 문제

과정 위치는 이 글이 속한 묶음입니다. 이 단계의 모든 개념을 먼저 읽을 필요는 없습니다. 위에 연결한 개념 중 낯선 내용만 복습하세요. 문제의 조건·상태·갱신 순서는 익숙한 언어로 설명하면 됩니다.

JavaScript로 문법·실행 복습하기 (선택)

개념 글의 코드는 JavaScript 예시입니다. 문제 화면에서는 JavaScript·Python·Java·C++·C# 중 익숙한 언어의 함수를 작성하세요. 본문의 Node.js 입출력 예시는 로컬 실행을 위한 별도 안내입니다.

대문자 찾기 문제에서는 문자열의 어떤 문자 개수를 구하나요?

문자열에서 영문 대문자가 몇 개인지 구하는 문제입니다. 문자열·문자 범위·조건문의 기본을 준비하고, 아래 입력·반환 계약을 확인해 직접 풀어보세요.

적용 조건·범위: 문자열 길이 제한은 100입니다. 숫자·기호를 넣는 검사는 코드의 판별 방식을 확인하는 추가 검사이며, 문제의 입력 조건을 새로 정의하는 것은 아닙니다.

공식 문서 참고: 관련 개념: MDN 문자열 크기 비교의 UTF-16 순서

문제

길이가 100을 넘지 않는 문자열 한 개가 주어집니다. 문자열의 각 문자를 확인해 알파벳 대문자가 몇 개인지 구한 뒤, 그 개수를 출력하는 문제입니다.

입력은 첫 줄의 문자열 하나이며 출력은 대문자 개수 하나입니다. 예제 문자열에서는 K, T, G가 대문자이므로 결과는 3입니다.

예제 입력
KoreaTimeGood

예제 출력
3

직접 풀어보기

먼저 선택한 언어의 입력·반환 계약에 맞춰 작성해 보세요. 힌트 받기와 정답과 비교하기는 코드를 실행하지 않는 AI 분석입니다. 해답·해설은 아래에서 필요할 때 펼칠 수 있습니다.

0 / 6,000바이트

solution(text)에 문자열을 전달하고 대문자 개수를 숫자로 반환합니다. 입력은 문제의 유효한 범위를 만족합니다. 표준 입력·출력 없이 결과를 반환하세요. Tab은 다음 항목으로 이동합니다. 입력 영역 오른쪽 아래를 끌어 높이를 조절할 수 있습니다.

비밀키·개인정보는 입력하지 마세요. 코드는 이 페이지에만 유지됩니다.

해답·해설 보기
JavaScript 해답
function solution(text) {
    let count = 0;
    for (const ch of text) if (ch >= 'A' && ch <= 'Z') count++;
    return count;
}

solution(text)에 문자열을 전달하고 대문자 개수를 숫자로 반환합니다. 입력은 문제의 유효한 범위를 만족합니다. 표준 입력·출력 없이 결과를 반환하세요.

원자료와 확인 범위

2026-10-12에 제공된 학습 자료 섹션 1. 기본문제풀이.pdf의 11쪽 ‘대문자 찾기’와 문제 조건·예제를 대조했습니다. 같은 ZIP의 해당 문제 TXT는 풀이 코드 자료입니다. 이 자료의 최초 출제 원문·저자·공개 배포 주소까지 확인한 것은 아닙니다.

이번 대조는 원자료의 문제 조건과 예제 확인입니다. 이 글의 전체 코드를 새로 실행하거나 공식 채점에 제출한 결과를 뜻하지 않습니다. 아래 예제·자가 확인 항목은 직접 실행해 기대 출력과 비교하는 기준입니다.

문자를 하나씩 확인하며 A부터 Z 사이에 있을 때만 개수를 늘립니다.

알고리즘 설계

문자열을 한 글자씩 순회하며 대문자일 때 카운트를 증가시키는 흐름

count를 0으로 시작하고 문자열 전체를 한 번 순회합니다. 각 문자를 대문자 알파벳 범위와 비교하므로 소문자·숫자·기호를 대문자로 세지 않습니다.

char === char.toUpperCase()만으로 판단하면 숫자와 기호도 조건을 만족합니다. 알파벳 대문자만 찾으려면 범위를 직접 비교하는 편이 분명합니다.

대문자 변환 비교와 A부터 Z까지의 범위 판별 차이를 보여주는 비교 흐름

다음 완성 코드는 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입니다. 숫자·기호를 넣는 검사는 코드의 판별 방식을 확인하는 추가 검사이며, 문제의 입력 조건을 새로 정의하는 것은 아닙니다.

이 문제를 푼 뒤 확인하기

대문자가 없는 문자열과 대문자만 있는 문자열을 각각 세어 보세요.

본문의 예제와 이 반례를 직접 실행해 예상 출력과 비교하고, 결과가 다르면 입력 조건과 반복 범위를 다시 확인하세요.

글 소개·학습 준비·전체 목차
먼저 직접 풀어보세요

문자열을 한 번 훑으며 A부터 Z 사이의 문자일 때만 개수를 늘립니다. KoreaTimeGood에서는 K, T, G가 해당하여 결과는 3입니다. 아래에서 대문자 범위 비교와 변형 입력을 확인하세요.

이 글이 도움이 되었나요?

조회 중

이어서 공부하기

체크포인트: 해설을 가리고 다시 풀고, 경계 입력을 하나 바꾸어 예상 결과와 실제 결과를 비교하세요. 같은 문자·찾는 문자 없음·홀짝 길이를 확인하고 결과의 등장 순서를 설명하세요.

다음 추천 · 문제: 대문자로 통일 풀이

같은 주제의 문제에 적용하며 방금 배운 개념을 확인합니다.

권장 순서는 학습 가이드와 같습니다. 다른 순서는 접힌 참고 목록에서 확인할 수 있습니다. 읽음 표시는 숙달이나 채점 결과가 아닙니다.

원래 과정 목록 순서 (선택)

읽음 기록

읽음 — / 전체 58개 · 필수 58개

이 글을 쓴 해비

웹사이트를 제작·운영하고, 개인 서비스와 자동화·AI 도구를 만듭니다. 직접 만들며 배운 내용과 문제 해결 과정을 BlogFlow에 기록합니다.

새 글 받아보기

RSS 리더에서 BlogFlow의 새 글을 확인할 수 있습니다.

RSS 피드 구독하기

댓글 남기기