본문 바로가기
XR개발/C언어

09_Q&A 알고리즘에 대한 물음.zip

by 오머리쿠_OmaryKoo 2025. 2. 15.

 

Q1. 알고리즘이란 무엇이고, 문제를 어떻게 접근하고 해결해야하는가?

프로그래밍 문제를 풀 때 알고리즘을 먼저 설계하는 것은 정석적이고 효과적인 접근 방식이다. 아래에 볼 코드들을 보면, 조합 구하기, 소수 판별 같은 문제들이 있는데, 이런 문제를 풀 때 알고리즘을 먼저 설계하고 코드로 옮기는 과정이 중요하다.


1. 알고리즘이란?

알고리즘은 문제를 단계별로 해결하는 명확한 절차를 의미한다. 간단히 말해, "문제를 푸는 방법"이며, 문제를 코드로 옮기기 전에, 알고리즘을 설계하는 것이 전체 과정을 더 명확하고 효율적으로 만들어준다.

예시 1: 조합 (Combination) 문제

  1. 알고리즘 설계
    • 을 계산하기 위한 함수를 만든다. (factorial)
    •   조합 수식을 코드로 표현할 때 factorial(n)을 이용해 값을 계산한다.
    •   입력값을 받아서 이 공식에 대입한다.
  2. 코드 작성
    •   이 과정에서 factorial 함수와 combination 함수로 나누어서 코드를 짬
    •   입력을 받고 조합 계산을 수행하는 알고리즘이 명확하게 구조화됨

예시 2: 소수 판별 문제

문제: 입력된 숫자가 소수인지 아닌지를 판별하는 코드

  1. 알고리즘 설계
    •   소수란 1과 자기 자신만으로 나누어지는 숫자.
    •   따라서 2부터 n−1까지의 숫자로 나눴을 때 한 번이라도 나누어떨어지면 소수가 아님.
    •   2부터 n−1까지 반복하며 검사하는 알고리즘을 설계할 수 있다.
  2. 코드 작성
    •   이 알고리즘을 바탕으로 is_prime 함수를 작성했음.
    •   입력값이 소수인지 아닌지를 검사하고 결과를 반환하는 구조.

2. 어떤 과정으로 문제를 접근해야 할까?

  1. 문제 이해하기
    •   문제의 조건과 목표를 정확히 파악함.
    •   어떤 입력이 주어지고, 어떤 출력을 만들어야 하는지 확인.
  2. 알고리즘 설계
    •   문제를 작은 단계로 나눠서 어떤 절차로 문제를 풀지 생각.
    •   가급적 말로 풀어서 설명해 보고, 흐름을 이해한 다음 코드로 옮김.
  3. 코드로 구현
    •   설계한 알고리즘을 코드로 옮겨. 이때 작은 함수로 나누어 구현하면 가독성이 높아짐.
    •   반복문, 조건문 등을 활용해서 효율적인 코드로 발전시켜 봄.
  4. 테스트와 디버깅
    •   다양한 입력값으로 테스트해서 코드가 정상적으로 작동하는지 확인.
    •   알고리즘이 효율적인지, 개선할 부분은 없는지 고민.

3. 위 문제들을 알고리즘으로 접근하는 예시

1) 조합 구하기 (Combination)

문제 분석

  • 입력값: 두 정수 n 과 r
  • 출력값: C(n , r)

알고리즘 설계

  1. n!을 구하는 factorial 함수 작성
  2. combination 함수에서 아래 공식 사용

 
2) 소수 판별

문제 분석

  • 입력값: 정수 n
  • 출력값: n이 소수인지 아닌지 판별

알고리즘 설계

  1. n이 2부터 n−1까지 나눠지는지 확인
  2. 한 번이라도 나눠지면 소수가 아님 (return 0), 끝까지 나눠지지 않으면 소수 (return 1)

문제 → 알고리즘 설계 → 코드 구현 → 테스트

 

이 과정을 습관화하면 점점 더 빠르고 효율적으로 문제를 풀 수 있음!

728x90