[이상선의 10분 강의 알고리즘] 1. 수열 알고리즘 -1

in #kr6 years ago

슬라이드1.png

알고리즘

안녕하세요. 하루 10 분 강의 알고리즘편입니다.

이 강의는 C언어 강의를 전부 수강한 분께서 들으면 매우 적합한 강의입니다.
처음부터 풀기 어려운 알고리즘을 하지 않고 초급부터 할 예정이지만,
C언어 문법을 모르고 공부하는것은 매우 어려울 것이라 생각하므로
필수로 C언어 기초를 배우고 와서 도전해보시길 바랍니다.

일단, 짧고 굵게 개념부터 이해하고 가시죠!

알고리즘이란?

= 문제를 해결하는 절차적 과정.
간단한 명령들로 구성된 일련의 단계.

알고리즘의 요건

= 단계가 단순해야 한다.
무한 작업이 생성되어서는 안된다.
효율적이어야 한다.
입력과 출력이 존재하여야 한다.

프로그래밍과 알고리즘의 관계

= 명령문을 논리적으로 전개하는 것.
문제를 해결하고자 하는 것들을 질서있게 나열한 문장.

최대한 짧고 굵게 적으려고 노력했습니다.
이론적인 것 보다 대부분 C언어를 알고 계실 것이라 생각하고 적는 파트이기 때문에
더 자세한 알고리즘 개념에 대한 내용을 원하시면
아래 링크를 참고하여 주시길 바랍니다.

https://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

출처 : 위키백과

슬라이드2.png

풀이

슬라이드3.png

#include <stdio.h>

void main() {

int i, sum = 0;

for (i = 1; i <= 100; i++) {
    sum += i;
}

printf("총 합계는 : %d입니다.\n", sum);

}

생각보다 간단하죠?
C언어로 구현하는 것도 어렵지 않습니다.
이 코드는 단순히 반복문 한 번으로 1항부터 100항까지의 합계를 sum 변수에 누적합니다.

자! 이 알고리즘을 쉽게 해결하였다면 이번에는 응용된 알고리즘을 풀어봅시다.

문제

4.png

풀이

5.png

#include <stdio.h>

void main() {

int i, sum = 0;
for (i = 1; i <= 100; i++) {
    if (i % 2 == 0) {
        sum -= i;
    }
    else {
        sum += i;
    }
}
printf("총 합계는 : %d 입니다.", sum);

}

아까보다 확실히 조금 더 어려운 코드입니다. 하지만 이 알고리즘도 생각보다 쉽습니다.
문제를 잘 보면 홀수항에는 +연산이, 짝수 항에는 -연산이 되기 때문에 if ~ else로 홀수항인지 짝수항인지 먼저 판별하여
sum이라는 합계변수에 누적하면 됩니다.
간단하죠?

어떠셨나요?
수열 알고리즘, 생각보다 쉽지 않으셨나요?

앞으로 나오는 기초 알고리즘과 중급, 고급 알고리즘은 생각보다 어려운 친구들이 많습니다!
하지만 차근히 하나 둘 풀다보면 어느새 알고리즘과 자료구조 응용 및 해결 방법이 보일 거에요.

코드는 무조건 적고 이해하고 또 적는 것입니다.

이번주도 매우 고생 많았습니다.
더욱 재미있는 코드로 찾아뵙겠습니다.

공부하는 여러분 파이팅입니다.

Sort:  

Sending you 0.001 SBD! Woot! To claim from the faucet, simply comment anywhere on SteemIt "I want to receive a payout from the @hodlorbust faucet!" https://steemit.com/steem/@hodlorbust/all-new-community-driven-steem-and-sbd-faucet

Sending you 0.018 SBD and 0.000 STEEM! Woot!

What is this? Please explain precisely