[이상선의 10분 강의 알고리즘] 1. 수열 알고리즘 -1
알고리즘
안녕하세요. 하루 10 분 강의 알고리즘편입니다.
이 강의는 C언어 강의를 전부 수강한 분께서 들으면 매우 적합한 강의입니다.
처음부터 풀기 어려운 알고리즘을 하지 않고 초급부터 할 예정이지만,
C언어 문법을 모르고 공부하는것은 매우 어려울 것이라 생각하므로
필수로 C언어 기초를 배우고 와서 도전해보시길 바랍니다.
일단, 짧고 굵게 개념부터 이해하고 가시죠!
알고리즘이란?
= 문제를 해결하는 절차적 과정.
간단한 명령들로 구성된 일련의 단계.
알고리즘의 요건
= 단계가 단순해야 한다.
무한 작업이 생성되어서는 안된다.
효율적이어야 한다.
입력과 출력이 존재하여야 한다.
프로그래밍과 알고리즘의 관계
= 명령문을 논리적으로 전개하는 것.
문제를 해결하고자 하는 것들을 질서있게 나열한 문장.
최대한 짧고 굵게 적으려고 노력했습니다.
이론적인 것 보다 대부분 C언어를 알고 계실 것이라 생각하고 적는 파트이기 때문에
더 자세한 알고리즘 개념에 대한 내용을 원하시면
아래 링크를 참고하여 주시길 바랍니다.
https://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
출처 : 위키백과
풀이
#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 변수에 누적합니다.
자! 이 알고리즘을 쉽게 해결하였다면 이번에는 응용된 알고리즘을 풀어봅시다.
문제
풀이
#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이라는 합계변수에 누적하면 됩니다.
간단하죠?
어떠셨나요?
수열 알고리즘, 생각보다 쉽지 않으셨나요?
앞으로 나오는 기초 알고리즘과 중급, 고급 알고리즘은 생각보다 어려운 친구들이 많습니다!
하지만 차근히 하나 둘 풀다보면 어느새 알고리즘과 자료구조 응용 및 해결 방법이 보일 거에요.
코드는 무조건 적고 이해하고 또 적는 것입니다.
이번주도 매우 고생 많았습니다.
더욱 재미있는 코드로 찾아뵙겠습니다.
공부하는 여러분 파이팅입니다.
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