가운데 문자 출력 풀이

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

읽기 전에 알아두면 좋아요

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

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

과정 위치와 선택 복습 안내

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

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

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

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

가운데 문자 출력 문제는 문자열의 어느 부분을 한 글자 또는 두 글자로 반환하나요?

문자열의 가운데에 있는 한 글자 또는 두 글자를 반환하는 문제입니다. 문자열의 길이·인덱스·홀짝의 기본을 준비하고, 아래 입력·반환 계약을 확인해 직접 풀어보세요.

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

공식 문서 참고: 관련 개념: MDN substring의 끝 인덱스 제외

문제

소문자로 이루어진 단어 하나가 주어지면 가운데 문자를 출력합니다. 단어 길이가 홀수라면 가운데 한 글자를, 짝수라면 가운데 두 글자를 출력해야 합니다. 입력 문자열의 길이는 100 이하입니다.

구분 내용
입력 첫 줄에 소문자 단어 하나
출력 가운데 한 글자 또는 두 글자
예제 1 study → u
예제 2 good → oo

문자열 인덱스는 0부터 시작합니다. 길이가 5인 study의 중앙 인덱스는 2이므로 세 번째 글자가 답입니다. 길이가 4인 good에서는 인덱스 1과 2가 가운데 두 칸입니다.

직접 풀어보기

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

0 / 6,000바이트

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

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

해답·해설 보기
JavaScript 해답
function solution(text) {
    const middle = Math.floor(text.length / 2);
    return text.length % 2 ? text.slice(middle, middle + 1) : text.slice(middle - 1, middle + 1);
}

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

원자료와 확인 범위

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

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

가운데 기준점은 Math.floor(word.length / 2)로 계산합니다. 이후 길이의 홀짝에 따라 substring의 시작 위치만 다르게 정하면 됩니다.

알고리즘 설계

홀수 길이에서는 가운데 한 칸, 짝수 길이에서는 가운데 두 칸을 선택하는 비교 과정
홀수 길이와 짝수 길이에서 선택하는 중앙 구간을 비교합니다.

길이가 홀수라면 middle 위치 한 칸만 선택합니다. substring(start, end)는 끝 인덱스를 포함하지 않으므로 substring(middle, middle + 1)을 사용합니다. 길이가 짝수라면 중앙 오른쪽 칸이 middle이고 왼쪽 칸은 middle - 1입니다. 따라서 substring(middle - 1, middle + 1)로 두 글자를 가져옵니다.

전체 입력에 trim()을 적용하면 맨 앞과 맨 뒤의 공백 및 줄바꿈이 제거됩니다. 이 문제의 입력은 공백이 없는 소문자 단어 하나이므로, 마지막 줄바꿈을 없애기 위해 사용해도 단어 자체가 달라지지 않습니다.

문자열 길이·0부터 시작하는 인덱스·조건식을 알고 시작합니다. Node.js 전체 코드를 solution.cjs로 저장하고 UTF-8 input.txt에는 study 또는 good 중 한 단어만 넣으세요. PowerShell 7에서는 Get-Content -Raw -Encoding UTF8 ./input.txt | node ./solution.cjs, Bash·명령 프롬프트에서는 node solution.cjs < input.txt로 읽습니다. 두 예제는 한 파일에 함께 넣지 않고 각각 실행해 u와 oo를 비교합니다. 여기서 안내하는 값은 기존 예제의 기대 출력이며 현재 실행은 미확인입니다.

문자열의 중앙 위치에서 한 글자 또는 두 글자를 잘라 내는 처리 흐름
중앙 기준점에서 길이의 홀짝에 맞는 구간을 잘라 냅니다.
const fs = require("fs");

const word = fs.readFileSync(0, "utf8").trim();
const middle = Math.floor(word.length / 2);

const answer =
  word.length % 2 === 1
    ? word.substring(middle, middle + 1)
    : word.substring(middle - 1, middle + 1);

console.log(answer);

조건식이 참이면 중앙 한 글자를, 거짓이면 중앙 두 글자를 answer에 저장합니다. 완성 코드는 함수 호출 예제가 아니라 표준 입력을 직접 읽으므로 문제의 실행 환경에서 그대로 사용할 수 있습니다.

복잡도와 검증

입력을 읽고 trim()으로 문자열을 정리하는 데 문자열 길이를 N이라 할 때 O(N) 시간이 듭니다. 중앙 인덱스 계산과 최대 두 글자를 자르는 선택 로직은 O(1)입니다. 입력 문자열 저장 공간은 O(N)이고, 풀이가 추가로 사용하는 변수와 결과 문자열은 O(1)입니다.

검증 입력 출력
홀수 길이 study u
짝수 길이 good oo
한 글자 a a
두 글자 ab ab
길이 100 중앙이 bc인 문자열 bc

관련 문자열 순회 기초는 문자 찾기 JavaScript 풀이와 대문자로 통일 JavaScript 풀이에서도 이어서 확인할 수 있습니다.

이 문제를 푼 뒤 확인하기

짝수 길이와 홀수 길이 문자열의 가운데 인덱스를 각각 써 보세요.

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

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

길이를 2로 나눈 몫을 중앙 기준점으로 잡습니다. 홀수 길이는 그 위치 한 글자, 짝수 길이는 바로 왼쪽과 그 위치의 두 글자를 선택하면 됩니다. 0부터 시작하는 인덱스로 두 구간을 먼저 적어 보세요.

이 글이 도움이 되었나요?

조회 중

이어서 공부하기

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

다음 추천 · 문제: 중복문자제거 풀이

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

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

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

읽음 기록

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

이 글을 쓴 해비

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

새 글 받아보기

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

RSS 피드 구독하기

댓글 남기기