본문 바로가기
엔트리메뉴/엔트리코딩시험-알고리즘

엔트리-약수구하기

by flycoding 2022. 9. 2.
반응형

엔트리 -약수구하기


엔트리 코딩시험에서 알고리즘의 가장 핵심적인 부분이 변수, 반복문, 조건, 함수이다.

이번 글에는 수를 입력 받아 약수를 찾는 프로그램을 작성해보자

먼저 간단한 수학개념을 익혀보자
약수란 무엇인가? 어떤 수를 나누어서 나머니가 0인 나누는 수를 약수라 한다. 예를 들어 12의 약수는 1부터 12까지의 자연수 중에서 나누어서 나머지가 0이 되는 수로서 1, 2, 3, 4, 6, 12이다. 반대로 이야기하면 약수는 두 수의 곱으로 나타내어 구할 수도 있다. 12는 1x12, 2x6, 3x4 는 모두 12결과값이다.


요구사항

약수를 어떻게 구하지? 구하는 방법부터 고민을 해야 한다.
수를 입력받는다.
입력받은 수를 1부터 입력받은 수까지 1씩 증가시켜가면 나누어서 나머지가 0이면 약수 리스트에 추가한다. 

분석 및 설계

. 변수만들기
- n : 키보드로부터 입력받은 수를 저장한다.
- num리스트 : 나머지가 0인 약수를 저장한다.

- i : num리스트 인덱스 변수로 활용한다.

. 초기화
- i = 1
- n : 키브도로부터 수를 입력받아 n에 저장한다. 

 

. 약수 찾기

  - i < n 때까지 반복하기

    - if ((n / i)의 나머지 = 0

      - num리스트 <- i

    - i = i + 1

 

블럭코딩

* 초기화
. i = 1
. n : 키브도로부터 수를 입력받아 n에 저장한다. 

 

엔트리-약수찾기 변수 초기화

 

. 약수 찾기
  - i < n 때까지 반복하기
    - if ((n / i)의 나머지 = 0
      - num리스트 <- i
    - i = i + 1

 

엔트리-약수찾기 알고리즘

 

 

* 디버깅

* 초기화

n=6 숫자를 입력받았다.

i=1


* 반복하기

입력한 값 n 까지 1씩 증가하면서 반복한다.

 

 

엔트리-약수찾기 반복

 

* 약수찾기

1부터 n 까지 1씩 증가하면서 n을 i값으로 하나씩 나누어서 나머지가 0인 값을 찾으면 num 리스트에 추가한다.

엔트리-약수찾기 블록코딩

 

[1스텝]
if (n/i)의 나머지 = 0  ;   (6/1)의 나머지 (0 = 0) (true)

  num = 1  (num = 1)

i=2


[2스텝]
if (n/i)의 나머지 = 0  ;   (6/2)의 나머지 (0 = 0) (true)

  num = 2  (num = 1, 2)

i=3

 

[3스텝]
if (n/i)의 나머지 = 0  ;   (6/3)의 나머지 (0 = 0) (true)

  num = 3  (num = 1, 2, 3)

i=3

 

[4스텝]
if (n/i)의 나머지 = 0  ;   (6/4)의 나머지 (2 = 0) (false)

i=5

 

[5스텝]
if (n/i)의 나머지 = 0  ;   (6/5)의 나머지 (1 = 0) (true)

i=6

 

[6스텝]
if (n/i)의 나머지 = 0  ;   (6/6)의 나머지 (0 = 0) (true)

  num = i  (num = 1, 2, 3, 6)

i=7

 

반복문 빠져나옴

결과는 num 리스트에 [1, 2, 3, 6]의 값이 저장된다.

6의 약수를 찾았다.

 

* 실행 결과물

수를 입력받는다. 6을 입력한다.

 

 

약수찾기 프로그램을 실행한 결과 화면이다.

 

엔트리-약수찾깃ㄹ행결과 화면

 

엔트리를 통해 약수를 찾는 프로그램을 작성해보았다. 수학적 개념을 토대로 나누어서 나머직가 0인 수를 약수로 정의하고 고 약수를 num 리스트에 추가하여 프로그램을 완성하였다.

 

수학적 개념을 컴퓨터적 사고방식으로 코딩을 하는 경험은 매우 중요하다. 실젝로 수학 개념을 그대로 코딩 알고리즘을 구현할 수도 있지만, 다른 방식으로 접근해야만 하는 경우도 있다. 생각하고 논리대로 문제를 풀어서 해결하는 능력이 코딩할 때 매우 중요하다.

다시 한번 강조해서 말하지만, 변수의 값이 각 프로그램 단계별 순차적으로 어떻게 변화하는지 추척하는 것이 매우 중요하다. 블럭을 하나씩 쌓으면서 변수 볼륨 값의 변화를 살펴보자. 코딩은 눈으로 보면서 이해하고 학습하지만 직접 블럭을 쌓으며 이해하고 학습하는 것이 더 효과적이며 창의와 이해의 개념이 ~쑥 늘어납니다.
앞으로의 여러분의 모습을 기대합니다.

Just Do it!!!
Just Drag&Drop!!!

MagneticFieldSen

 

반응형

댓글