CodeUp 기초 100제 중 1076번부터 1080번까지는 프로그래밍의 꽃이라 불리는 반복문(Iteration)의 심화 및 응용 단계입니다. 앞선 단계에서 단순한 반복을 배웠다면, 이번 구간에서는 문자(char)를 순서대로 나열하거나, 특정 조건에 도달할 때까지 합계(Sum)를 누적하는 등 보다 논리적이고 동적인 흐름 제어를 연습하게 됩니다.
컴퓨터가 인간보다 압도적으로 뛰어난 점은 지치지 않고 수만 번, 수억 번의 연산을 정확하게 반복할 수 있다는 것입니다. 이 구간의 문제들은 for, while, do-while 문을 상황에 맞게 골라 쓰는 능력을 기르고, 반복문 내부에서 if문과 break를 조합하여 원하는 시점에 정확히 멈추는 정교한 제어 능력을 키우는 데 목적이 있습니다. 알고리즘 문제 해결의 핵심인 '누적 연산'과 '임계값(Threshold) 판단'의 기초가 되므로 확실히 익혀두어야 합니다.
1076 : [기초-반복실행구조] 문자 1개 입력받아 알파벳 출력하기 영문자 1개(a ~ z)를 입력받아, 'a'부터 입력받은 문자까지 순서대로 공백을 두고 출력해보자.
소스 코드
#include <stdio.h>
int main() {
char c, t = 'a'; // 시작 문자는 'a'로 초기화
scanf("%c", &c);
do {
printf("%c ", t);
t++; // 문자 값을 1 증가 (a -> b -> c ...)
} while(t <= c); // 현재 문자가 입력된 문자보다 작거나 같을 동안 반복
return 0;
}
예시 입력 / 출력
[입력]
f
[출력]
a b c d e f
문제 해설 컴퓨터 내부에서 문자(char)는 고유한 정수 값(아스키 코드)으로 저장되어 처리됩니다. 그렇기 때문에 문자 변수에도 숫자처럼 증감 연산자(t++)를 사용하여 다음 알파벳으로 넘길 수 있고, 비교 연산자(t <= c)를 통해 순서를 비교할 수도 있습니다. 이 코드는 do-while문을 사용하여 일단 문자를 먼저 출력하고 증가시킨 뒤, 입력받은 문자에 도달했는지 검사하여 반복 여부를 결정합니다.
1077 : [기초-반복실행구조] 정수 1개 입력받아 그 수까지 출력하기 정수 1개(n)를 입력받아 0부터 n까지의 정수를 한 줄에 하나씩 출력해보자.
소스 코드
#include <stdio.h>
int main() {
int n, i;
scanf("%d", &n);
for(i = 0; i <= n; i++) { // i는 0부터 n까지 1씩 증가
printf("%d\n", i);
}
return 0;
}
예시 입력 / 출력
[입력]
4
[출력]
0
1
2
3
4
문제 해설 반복의 시작점(0)과 끝점(n), 그리고 증가폭(1씩 증가)이 명확하게 정해져 있는 경우에는 for문을 사용하는 것이 가장 구조적이고 코드가 깔끔합니다. for(초기화; 조건식; 증감식)의 구조를 활용하여 변수 i가 0부터 시작해서 n이 될 때까지 1씩 커지며 내부의 출력문을 반복 실행하게 됩니다.
1078 : [기초-종합] 짝수 합 구하기 정수 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자.
소스 코드
#include <stdio.h>
int main() {
int n, i, sum = 0; // 합을 담을 변수는 반드시 0으로 초기화
scanf("%d", &n);
for(i = 1; i <= n; i++) {
if(i % 2 == 0) { // i가 짝수라면
sum += i; // sum에 i를 더해서 누적
}
}
printf("%d", sum);
return 0;
}
예시 입력 / 출력
[입력]
5
[출력]
6
문제 해설 값을 계속해서 더해나가는 '누적 합(Accumulation)'을 구하는 문제입니다. 합계 결과를 담을 변수(sum)는 처음에 쓰레기 값이 들어있을 수 있으므로 반드시 선언과 동시에 0으로 초기화해야 합니다. 반복문 안에서 if(i % 2 == 0) 조건을 이용해 짝수일 때만 sum 변수에 현재 숫자 i를 더해주는 방식으로 짝수의 합만 골라낼 수 있습니다.
1079 : [기초-종합] 원하는 문자가 입력될 때까지 반복 출력하기 문자들이 공백으로 구분되어 입력될 때, 'q'가 입력될 때까지 입력된 문자를 줄을 바꿔 한 줄에 하나씩 출력하고, 'q'가 입력되면 그 문자까지 출력하고 종료해보자.
소스 코드
#include <stdio.h>
int main() {
char c;
while(1) { // 조건이 1(참)이므로 무한 루프
scanf(" %c", &c); // 공백을 건너뛰고 문자 입력받기
printf("%c\n", c);
if(c == 'q') break; // 입력받은 문자가 'q'면 반복 종료
}
return 0;
}
예시 입력 / 출력
[입력]
x b k d l q g a c
[출력]
x
b
k
d
l
q
문제 해설 입력이 언제 끝날지 횟수를 알 수 없을 때는 while(1)을 사용하여 무한 루프를 만듭니다. 반복문 내부에서 입력을 받고 문자를 출력한 뒤, if(c == 'q') break; 문장을 통해 종료 조건이 충족되면 즉시 반복문을 탈출하도록 설계합니다. scanf 사용 시 %c 앞에 공백을 한 칸 넣어주면(" %c") 입력 버퍼에 남아있는 엔터나 공백을 무시하고 문자만 정확히 읽어올 수 있습니다.
1080 : [기초-종합] 언제까지 더해야 할까? 1, 2, 3... 을 계속 더해 나갈 때, 그 합이 입력한 정수(target)보다 같거나 커지는 시점의 마지막 더한 숫자를 출력해보자.
소스 코드
#include <stdio.h>
int main() {
int target, i = 0, sum = 0;
scanf("%d", &target);
while(sum < target) { // 합이 목표값보다 작은 동안 반복
i++; // 숫자 증가 (1, 2, 3...)
sum += i; // 합계 누적
}
printf("%d", i); // 합이 target 이상이 되었을 때의 마지막 숫자 출력
return 0;
}
예시 입력 / 출력
[입력]
55
[출력]
10
문제 해설 조건에 따라 반복을 멈추는 '임계값(Threshold)' 처리 문제입니다. while(sum < target) 조건은 "합계가 아직 목표값보다 작다면 계속 더하라"는 의미입니다. 반복하다가 sum이 target과 같아지거나 커지는 순간 조건이 거짓이 되어 반복문이 종료됩니다. 이때 마지막으로 더했던 숫자가 i에 저장되어 있으므로, 반복 종료 후 i를 출력하면 정답이 됩니다.
핵심 요약
| [CodeUp] C언어 기초 100제 풀이 (1085번 ~ 1088번) (0) | 2026.02.04 |
|---|---|
| [CodeUp] C언어 기초 100제 풀이 (1081번 ~ 1084번) (0) | 2026.02.03 |
| [CodeUp] C언어 기초 100제 풀이 (1071번 ~ 1075번) (0) | 2026.02.03 |
| [CodeUp] C언어 기초 100제 풀이 (1066번 ~ 1070번) (0) | 2026.02.03 |
| [CodeUp] C언어 기초 100제 풀이 (1061번 ~ 1065번) (0) | 2026.02.01 |