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

엔트리-이진수를십진수로변환

by flycoding 2022. 9. 8.
반응형

엔트리 -이진수를십진수로변환

 

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

 

엔트리 프로그램으로 이진수를 십진수로 변환하는 프로그램을 작성해 보자.

 

요구사항

이진수를 십진수로 변환하는 알고리즘은 이진수의 각 자리를 십진수로 변경하고 각 자리의 수를 더한 결과값이 십진수이다.

이진수에 각 자리에는 십의 자리에 해당하는 값이 2^0, 2^1, 2^2, 2^3 등의 값을 구하고, 각 자리의 이진값과 곱한다.

그리고 각 자리의 이진값들을 더하면 십진값이 된다.

 

예로 1010 이진값이라 하면

1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 8 + 0 + 2 + 1 = 10

 

* 참고 : 제곱^지수

  . 어떤 수나 문자의 오른쪽 위에 덧붙여 쓰여 그 거듭제곱을 한 횟수를 나타내는 문자나 숫자

 

분석 및 설계

. 변수만들기

  - a : 이진수의 각 자리의 2제곱값을 저장한다. (2^n)

  - i : 자리수를 차례대로 변화시켜가며 계산하기 위한 인덱스 변수

  - len : 이진수 자리수를 저장한다.

  - n : 이진수의 지수값을 저장한다.

  - n1 : 키보드로부터 이진수를 저장하는 변수이다.

  - result : 이진수를 십진수로 변환한 결과값을 저장한다.

 

 

. 초기화

  - n1 : 키보드로부터 숫자를 입력받아 저장한다.

  - len : n1의 길이를 저장한다.

  - i = 1

  - result  = 0

 

 

. 이진수를 십진수로 변환하는 알고리즘

  - i > len 까지 반복하기

    - a = 1

    - n = len - 1

       - n 번 반복하기

          - a=a*2

    - result = result + n1의 i번째 이진자리값 * a

    - i=i+1

 

블럭코딩

 

. 초기화
  - n1 : 키보드로부터 숫자를 입력받아 저장한다.
  - len : n1의 길이를 저장한다.
  - i = 1
  - result  = 0

 

엔트리-이진수십진수변환 변수초기화

 

. 이진수를 십진수로 변환하는 알고리즘
  - i > len 까지 반복하기
    - a = 1
    - n = len - 1
       - n 번 반복하기
          - a=a*2
    - result = result + n1의 i번째 이진자리값 * a
    - i=i+1

 

엔트리-이진수를십진수변환 알고리즘

 

 

* 디버깅

* 초기화

. n1=1010

. len=4

. i = 1

. result = 0

 

 

[1스텝]

i > len  반복하기 (1>4, false)

a=1

n=len-i (4-1, 3)

  . n번반복하기(3회)

     a=a*2

     => 2*2*2 

a=8

result = 0 + n1의 i번째 수 * a (0 + 1 * 8, 8)

i=2

 

 

 

.......................................>

[2스텝]

i > len  반복하기 (2>4, false)

a=1

n=len-i (4-2, 2)

  . n번반복하기(2회)

     a=a*2

     => 2*2 

a=4

result = 8 + n1의 i번째 수 * a (8 + 0 * 4, 8)

i=3

 

[3스텝]

i > len  반복하기 (3>4, false)

a=1

n=len-i (4-3, 1)

  . n번반복하기(1회)

     a=a*2

     => 2 

a=2

result = 8 + n1의 i번째 수 * a (8 + 1 * 2, 10)

i=4

 

[4스텝]

i > len  반복하기 (4>4, false)

a=1

n=len-i (4-4, 0)

  . n번반복하기(0회)

     => 1 

a=1

result = 10 + n1의 i번째 수 * a (10 + 0 * 2, 10)

i=5

 

[4스텝]

i > len  반복하기 (5>4, false)

 

 

result : (10)

 

 

* 실행 결과물

변환할 이진수를 키보드로부터 입력받아 변수 n에 저장한다. 예로 이진수 1010을 입력하였다.

 

엔트리-이진수를십진수로변환 이진수 입력 실행화면

 

 

이진수 1010을 십진수로 변환한 결과는 십진수(10) 이다.

 

엔트리-이진수를십진수변환 실행결과 화면

 

엔트리를 통해 이진수를 십진수로 변환하는 프로그램을 작성하였다. 사람이 수학으로 이진수를 십진수로 변환하는 것은 그렇게 어렵지 않지만, 프로그램 코딩으로 구현하려면 다양한 문제 해결 방법을 생각하고 고민해야 한다. 이런데에 코딩하는 재미가 있는 것 같다. 본 프로그램을 통해 이진수를 만드는 과정을 하나씩 살펴보았다. 

 

디버깅이란 코너를 꼭 다시 한번 천천히 변수값들이 어떻게 변화하는지 확인하고 반복문 사이에 i, result 값이 어떻게 변화하는지 확인을 바란다.

 

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

앞으로의 여러분의 모습을 기대합니다.

 

Just Do it!!!

Just Drag&Drop!!!

반응형

댓글