[내일배움캠프 Spring_3기] Flowchart 2일차

jiiim_ni·2026년 1월 20일

오늘은 총 2문제 풀었다.

첫번째 문제는

구구단 출력 (특정 단)

문제 설명:
사용자로부터 정수를 입력받아 해당 단의 구구단을 출력하는 프로그램을 설계하세요.
학습 포인트:

  • while 루프를 사용한 반복 계산
  • 출력 형식 지정

입력/출력 정리
1) 입력 :
정수(1개) - 예: 2

2) 출력 :
입력받은 수의 구구단 출력

3) 상태 (계속 들고 있어야 하는 값) :

  • dan: 사용자가 입력한 구구단의 단
  • i: 곱해지는 수(1부터 9까지 증가하는 카운터 변수)

조건 정리
1) 종료 조건 (끝나는 시점):
i가 9를 초과했을 때 반복을 종료

2) 분기 조건 (갈라지는 기준):
없음

3) 예외 / 에러 조건 (정상 범위):
없음(정수 입력 보장)

흐름 설계
1) 시작할 때 한 번만:

  • 정수 dan을 입력받음
  • 곱해지는 수를 저장할 변수 i를 1로 초기화함

2) 반복(흐름):

  • 반복 조건 : i<=9
    1. 정수 dan을 입력받는다.
    2. dan x i = 결과 형식으로 출력
    3. i = i +1로 값 증가
    4. 증가된 i 값을 가지고 반복 조건 다시 검사

3) 종료할 때:

  • i가 9를 초과하면 반복을 종료
  • 프로그램을 종료한다.


두번째 문제는

팩토리얼 계산

문제 설명:
사용자로부터 양의 정수 n을 입력받아 n!(팩토리얼)을 계산하는 프로그램을 설계하세요. n! = n (n-1) (n-2) ... 1
학습 포인트:

  • 누적 곱셈 계산
  • 팩토리얼 알고리즘

입력/출력 정리
1) 입력 :
양의 정수 1개 (예: 5)

2) 출력 :
입력받은 정수 n의 팩토리얼 값 출력

3) 상태 (계속 들고 있어야 하는 값) :

  • n: 사용자가 입력한 양의 정수
  • i: 반복을 위한 변수(카운터 변수)
  • result: 팩토리얼 결과 저장하는 누적 곱셉 변수

조건 정리
1) 종료 조건 (끝나는 시점):
i가 n보다 커졌을 때 반복 종료

2) 분기 조건 (갈라지는 기준):
없음 (입력값에 따라 실행 흐름이 달라지지 않기 때문에)

3) 예외 / 에러 조건 (정상 범위):
없음 - 양의 정수가 입력된다고 가정

흐름 설계
1) 시작할 때 한 번만:
사용자로부터 양의 정수 n 입력 받음
i = 1로 초기화
result = 1로 초기화

1로 초기화 하는 이유:

  • result가 0이면 0 곱하기 n은 0 -> 계산 망함.
  • 그리고 result가 n이면 중복 곱셈이 발생함
  • i는 팩토리얼을 만들기 위한 변수임
    result = 1 x 1 x 2 x 3 x ... x n 이렇게 계산하기 위해서 i = 1로 초기화하는 것

2) 반복(흐름):
1. 반복 조건 i <= n
2. result = result x i로 값을 누적해서 곱한다
3. i = i + 1로 값 증가시킴
4. 반복 조건 다시 검사

2-1) 플로우차트 전체 흐름
1. 프로그램 시작
2. n 입력 받기
3. i = 1, result = 1 초기화
4. i <= n ? 조건 검사

  • 예: result = result x i
    i = i + 1 -> 다시 조건으로 이동
  • 아니오: result 출력 -> 종료

3) 종료할 때:

  • 반복 종료
  • 계산된 result 값 출력


문제 풀이 과정에서 프로그램이 한 번의 입력만 처리하고 종료되는 구조인지,
아니면 특정 종료 조건을 입력할 때까지 사용자 입력을 반복해서 처리하는 구조인지를
초기에 명확히 구분하지 못해 설계 단계에서 혼동이 있었다.
이를 보완하기 위해 개인 학습 시간에 특정 종료 조건을 입력해야 프로그램이 종료되고,
그 전까지는 사용자의 입력을 반복해서 받아
같은 단(예: 2단)을 다시 입력하면 다시 출력되도록 하는 구조를
플로우차트로 추가 설계해보며,
반복 조건과 종료 조건을 명확히 구분하는 연습을 진행할 예정이다.

0개의 댓글