알고리즘은 어떤 문제를, 명확한 정의를 통해 해결하는 것이다.
명확한 문제 정의가 정말 중요한 사항이다. 개인적으로 문제 정의가 70%, 해결 전략 20%, 구현 10%라고 생각한다.
그만큼 문제 정의가 중요하다는 뜻이다. 문제가 명확히 정의 되고, 해결 전략이 세워지면 그 다음은 금방 끝난다.
하지만 영화에서 코딩하는 장면이 현실과는 다르게 묘사 되어서 그런지 대부분 구현(코딩) 100%라고 생각하는 것 같다.
이제 알고리즘 기초에 대해서 이해하는 시간을 가져보려 한다.
우선 아래 코드를 한번 실행해보길 바란다.
#include<stdio.h>
int a, b, c;
void input()
{
//Sequential 구조
printf("a값: ");
scanf("%d", &a);
printf("b값: ");
scanf("%d", &b);
printf("c값: ");
scanf("%d", &c);
}
int main()
{
printf("세 정수의 최댓값을 구합니다\n");
input();
int max = a;
// Selection 구조
if (b > max) max = b;
if (c > max) max = c;
printf("최대값은 %d입니다.", max);
return 0;
}
a, b, c에 각각 3, 4, 5를 대입하면 최댓값인 5가 출력 된다.
입력받는 부분을 input이라는 함수로 따로 만들었는데, 첫 시작부터 많은 부분을 함수로 따로 설계하는 것을 추천한다.
그래야 디버깅도 편하고 전반적인 구조를 잡을때도 편해진다.
(대소비교를 하는 부분도 함수로 따로 만들면 좋지만 이번 글에서는 우선 입력 부분만 넣었습니다.)
입력 받는 부분을 보면 순서대로 하나씩 입력을 받으면서 실행 되는 것을 볼수 있는데, 이렇게 순차적으로 실행 되는 구조를 순차구조(Sequential)라고 합니다.
반면에 if문은 ()안에 있는 식의 결과에 따라 실행흐름이 바뀌기는데, 이를 선택구조(Selection)라고 합니다.
정리하면 다음과 같습니다.
- 문장이 순서대로 실행 -> 순차구조(Sequential)
- 문장이 조건에 따라 실행 -> 선택구조(Selection)
큰 예제는 아니지만 내용 이해를 돕기 위해 예제 코드 링크를 아래 남겨 놓으니 한번씩 고민해보시면 좋을꺼 같습니다.
(전혀 어렵지 않아요!)
https://hyperbooth.tistory.com/36
[연습 예제 1-1] 최소 값 구하기
문제: 입력 받은 값 중 최소 값을 구하시오. a = 3, b = 4, c = 5 !! 순차구조, 선택구조 생각하면서 구현해보세요 !! 구현 코드는을 아래에 있습니다~ #include int a, b, c; void input() { printf("a값: "); scanf("%d",
hyperbooth.tistory.com
https://hyperbooth.tistory.com/37
[연습 예제 1-2] 중앙값 구하기
세개의 정수를 입력받아 중앙값을 구하는 문제입니다. 문제의 해법을 한번에 해결하려 하지 마시고 기능을 나누어 기능에 맞는 함수를 구현하는 방식을 추천 드립니다. 그래야 나중에 복잡한
hyperbooth.tistory.com
오늘은 알고리즘이 무엇을 하는것인지, 순차구조, 선택구조라는 용어를 설명하는 글이었습니다.
용어를 외우려 노력하실 필요는 없고 앞으로 자연스럽게 습득하실 것 같습니다.
오늘도 고생하셨습니다!!
'알고리즘 > 알고리즘 기초' 카테고리의 다른 글
[연습 예제 1-2] 중앙값 구하기 (0) | 2023.02.01 |
---|---|
[연습 예제 1-1] 최소 값 구하기 (0) | 2023.01.31 |