본문 바로가기

TIL

Flowchart에 대하여.

어제부터 오늘까지 flowChart에 대해서 수업을 조금 들었습니다. 

어려운 개념이나 코딩기법은 아니지만 익혀두면 확실히 도움이 되는 것은 맞는거같습니다. 

이전까지 저는 그냥 머릿속으로 흐름을 생각하고 코딩을 했는데 얼마전 (한달?) 전쯤 draw.io 라는걸 알게되었고 제가 진행 했던 사이드 프로젝트 구조를 한번 만들어 봤었습니다. 

당시 이런 그림을 거의 2시간에 가까이 그린적이있는데 처음 사용해보고 내가 만든 구조가 이게 맞나..? 생각하면서 작성을 하느라 조금 오래 걸린거같습니다. 

 

근데 강의에서 miro라는 사이트를 통해 수업을 진행했는데. 

유로라곤 하지만 무료 버전또한 제가 느끼기에 draw보다 훨씬 사용감이 좋았습니다..그리고 강의를 통해 저는 단순 프로젝트 아키텍쳐를 그리는 용도로만 사용을 했는데 이렇게 플로우를 그리는 방법 또한 학습을 해서 좋았습니다. 

 

연습문제 1번.

사용자가 0을 입력할 때까지 숫자를 계속 입력받고, 프로그램 종료 시 지금까지 입력한 숫자 중 가장 큰 숫자를 출력하세요.

 

제가 정리한 의사결정 코드는 아래와 같습니다.

입력/출력 정리
1) 입력 :
- 사용자가 매번 입력하는 정수 num

2) 출력 :
- 입력 값중 가장 큰 숫자  

3) 상태 (계속 들고 있어야 하는 값) :
- 입력된 숫자가 저장된 inputList 처음엔 빈 배열 
조건 정리
1) 종료 조건 (끝나는 시점):
- 입력값이 0일 때 프로그램을 종료한다.

2) 분기 조건 (갈라지는 기준):
- 입력값이 0인가? (예 -> 종료, 아니오-> 배열에 추가) 다시 반복 

3) 예외 / 에러 조건 (정상 범위):
- 숫자가 아닌 값이 들어오면 "정수를 입력하세요" 를 출력하고 다시 받는다.
흐름 설계
1) 시작할 때 한 번만:
- inputList = ArrayList 빈 배열로 초기화 한다.

2) 반복:
    1.정수 num을 입력받는다.
    2. num값이 0인지 확인한다.
       - 예: 지금까지 입력 받은 숫자중 가장 큰 숫자를 출력하고 반복을 종료한다.
       - 아니오: inputList.add(num)을 수행한다.
    3. 다시 1번으로 돌아간다.

3) 종료할 때:
- 배열 중 가장 큰 숫자를 출력한다.
- 프로그램을 종료한다.

이후 제가 작성한 flowchart입니다. 

여기서 다른분들의 차트를 보면서 한가지 정말 제가 놓친부분이 있었습니다. 

1. 꼭 배열로 만들어야 했는가? 

저는 가장 큰 수 를 알아야하는데 만약 초기 변수가 max = 0;  이고 사용자가 -1 을 입력하고 바로 0으로 종료시 출력되어야 하는 데이터는 

-1 이어야합니다. 

하지만 저렇게 0으로 선언하면 우리가 원하는 동작 을 할 수 없는것이죠

그렇기 때문에 저는 배열을 만들어 안정성을 높여야겠다고 판단을 했습니다.

 

하지만 다른 수강생이 max = 아주작은수 라고 선언을 한것을 보았습니다.

저와 비슷한 이유로 작성했지만 다른 방법을 추구한 것입니다. 그리고 이 방법이 더 좋은 방식(메모리적으로) 이라고 생각이 들었습니다. 실제로 내장함수에 가장 낮은 수를 가져오는 함수도 있다고하니 이런식으로 플로우 차트를 작성했다면 더 좋은 결과를 얻었을 거라 생각을 합니다. 

 

연습문제 2번.

사용자가 0을 입력할 때까지 숫자를 계속 입력받고, 프로그램 종료 시 지금까지 입력한 숫자 중 가장 큰 숫자를 출력하세요.

입력/출력 정리
1) 입력 :
- 사용자가 매번 입력하는 정수 num

2) 출력 :
- 입력 값중 가장 큰 숫자  

3) 상태 (계속 들고 있어야 하는 값) :
- 입력된 숫자가 저장된 inputList 처음엔 빈 배열 
조건 정리
1) 종료 조건 (끝나는 시점):
- 입력값이 0일 때 프로그램을 종료한다.

2) 분기 조건 (갈라지는 기준):
- 입력값이 0인가? (예 -> 종료, 아니오-> 배열에 추가) 다시 반복 

3) 예외 / 에러 조건 (정상 범위):
- 숫자가 아닌 값이 들어오면 "정수를 입력하세요" 를 출력하고 다시 받는다.
흐름 설계
1) 시작할 때 한 번만:
- inputList = ArrayList 빈 배열로 초기화 한다.

2) 반복:
    1.정수 num을 입력받는다.
    2. num값이 0인지 확인한다.
       - 예: 지금까지 입력 받은 숫자중 가장 큰 숫자를 출력하고 반복을 종료한다.
       - 아니오: inputList.add(num)을 수행한다.
    3. 다시 1번으로 돌아간다.

3) 종료할 때:
- 배열 중 가장 큰 숫자를 출력한다.
- 프로그램을 종료한다.

연습문제2번은 피드백은 받은게 없지만, 그래도 제 나름대로 여러 조건, 만약 영화를 한번도 보지 않고 종료하는 경우

문자열 같은 잘못된 데이터가 입력 된 경우, 를 추가하여 작성을 해보았습니다.

'TIL' 카테고리의 다른 글

이중콜론(::)(매서드 참조)표현식  (0) 2026.01.14
enum이란 무엇인가?  (0) 2026.01.13
싱글톤 패턴(Singleton Pattern)이란?  (1) 2026.01.13
Garbage Collection(GC) 이란?  (0) 2026.01.12
객체지향 이해하기 -1 (배경 지식)  (0) 2026.01.09