꿈꾸는 개발자, Front-end Developer

Trust that the dots will connect in your future.

#CSS #Dev #EJS #HTML #Hexo #JavaScript #dev #jQuery #smallTalk #번역 #삽질 #신세계 #이론 #정보처리기사

알고리즘, 1~100 합 구하기, 홀수,짝수만 더하기


한 달 앞으로 다가온 2017년 마지막 정보처리기사 시험.

알고리즘 과목부터 시작하여 공부한 내용들을 하나씩 정리해 게시하려 합니다.

알고리즘 과목은 순서도와 C, Java 언어로 제시되며 곳곳의 빈 칸을 채우는 주관식 문제입니다.

문제를 순서도와 C 언어로 표현하여 정리하고 더불어 같은 내용을 JavaScript로도 표현하며 마무리 하겠습니다.

왜 JavaScript냐고요? 따로 공부하고 있어서요~ 겸사겸사 :-)


기본 사항들 - 순서도

  1. 순서도 기호

    basicInformation

  2. =기호의 의미

    A = 1

    위 식의 의미는 ‘변수 A가 1과 같다’가 아닌 ‘변수 A에 1을 대입한다’는 뜻입니다.

  3. 식은 우항(오른쪽)부터 왼쪽으로 읽는 것이 편합니다.

    A = A + 1

    위 식의 의미는 ‘변수 A에 1을 더해서 그 값을 다시 A에 대입한다’는 뜻입니다.

    한국어 문법과 의미 순서가 반대이기 때문에 우항부터 읽는 것이 의미가 더 자연스러울 수 있습니다.

    영어식 언어 문법에 익숙하다면 순서대로 읽으시면 됩니다.


기본 사항들 - C언어

  1. 출력 명령문 printf

    값을 출력할 때 사용하는 명령문 printf의 사용법은 다음과 같습니다.

    printf("서식문자열", 변수)

    서식문자열은 출력할 변수를 표현할 방식을 설정하는 것입니다.

    가능한 표현 방식으로는,

    • %d : decimal, 변수 값을 10진수로 표현
    • %o : octal, 변수 값을 8진수로 표현
    • %c : character, 변수 값을 문자 방식으로 표현
    • %s : string, 변수 값을 문자열 방식으로 표현
    • %x : hexadecimal, 변수 값을 16진수로 표현
    • \n : 공백 줄 하나를 삽입 (HTML 태그 <br>과 비슷)
  2. 연산자

    • A++ : 변수 A를 1 증가 시킨 후 사용
    • A– : 변수 A를 1 감소 시킨 후 사용
    • A == B : A와 B는 같다
    • A != B : A와 B는 같지 않다


기초 알고리즘

1~100 합 구하기

1+2+3+...+99+100의 결과를 구하는 알고리즘입니다.

규칙을 잠시 생각해보면,

  1. 숫자가 1씩 증가한다.
  2. 1씩 증가한 수를 증가하기 이전의 수에 더한다.
  3. 이를 100이 더해질 때까지 반복한다.

규칙 1과 2에서는 계속 숫자가 변화합니다. 따라서 변화하는 수, 즉 변수가 2개 필요한 것으로 보입니다.

  • 변수 1 : 1씩 증가하는 변수
  • 변수 2 : 변수 1의 합을 누적하는 변수

이를 순서도로 나타내면 다음과 같습니다.

200



이를 C언어로 나타내면 다음과 같습니다.

#include <stdio.h>
main()
{
int A;
int SUM;
A = 0;
SUM = 0;
while(A < 100){
A++;
SUM = SUM + A;
}
printf("%d", SUM);
}

이를 JavaScript로 나타내면 다음과 같습니다.

function sum1to100(){
var A = 0;
var SUM = 0;
while(A < 100){
A++;
SUM = SUM + A;
}
return console.log(SUM);
}

만약 1에서 100까지의 수 중에 짝수, 혹은 홀수만 더하고 싶다면 어떻게 할까요?

간단합니다. 짝수에 2를 더하면 다시 짝수가 되고, 홀수에 2를 더하면 역시 홀수가 되니까

변수 A에 1을 증가시키는 A++ 대신 A = A + 2를 사용하고, A의 초기값으로 짝수나 홀수 중 하나를 선택하면 되겠지요.

짝수 합을 C로 다시 나타내면,

#include <stdio.h>
main()
{
int A;
int SUM;
A = 0;
SUM = 0;
while(A < 100){
A = A + 2;
SUM = SUM + A;
}
printf("%d", SUM);
}

홀수 합의 경우는 A의 범위와 SUM의 초기 값을 신경써야 합니다.

#include <stdio.h>
main()
{
int A;
int SUM;
A = 1;
SUM = 1;
while(A < 99){
A = A + 2;
SUM = SUM + A;
}
printf("%d", SUM);
}

while문의 첫 작업이 A의 값을 2증가시키는 것이기 때문에 최초로 SUM에 더해지는 값은 3입니다.

만약 SUM 초기 값을 0으로 설정했다면 범위가 1~100이 아닌 3~100이 될 것입니다.

따라서 SUM 초기 값으로 1로 변경했으며 while문의 A의 범위도 99로 조정했습니다.

만약 그대로 100을 주었다면 99에 2를 증가시킨 101이 한 번 더 더해질 테니까요.


그리 어렵지 않은 문제들이지만, 마지막 반복을 결정하는 변수 A값의 범위를 주의해야 합니다.

행여나 99까지만 더하고 100을 빼먹는다던지 101까지 더해버리면 큰일이니까요!


#JavaScript #이론 #정보처리기사