오늘은 프로그래밍의 기초 중 하나인 배열(array) 개념과, 이를 활용한 다양한 알고리즘 문제 해결 방법을 학습했다.
배열은 AI 모델을 구현하거나 데이터를 전처리할 때 가장 기본적인 단위 구조로 자주 활용되며, 연산 효율성을 극대화하기 위해 최적화된 알고리즘이 필수적으로 요구된다.
특히 오늘 다룬 최댓값 구하기, 역순 정렬, 진수 변환, 소수 판별 등의 문제는 단순한 기초처럼 보이지만, AI 시스템의 내부 로직이나 성능 개선과 밀접한 관계가 있다는 점에서 중요하다.
배열이란?
배열은 동일한 자료형의 데이터를 연속된 공간에 저장하는 구조로, 데이터에 인덱스를 통해 접근할 수 있는 것이 특징이다. 파이썬에서는 리스트(list)가 배열 역할을 수행하며, 이를 기반으로 다양한 알고리즘을 구현할 수 있다.
배열 원소의 최댓값 구하기
개념 요약
- 첫 번째 원소를 기준값(maximum)으로 설정
- 나머지 요소들과 비교하여 더 큰 값이 있으면 갱신
- 총 비교 횟수는 n개의 요소 중 (n-1)번
예제 흐름
- a[0]을 maximum으로 저장
- a[1] ~ a[n-1]까지 비교
- 조건에 맞을 경우 maximum을 갱신
배열 원소의 최댓값 구하기 (함수 구현)
핵심 포인트
- max_of() 함수를 정의해 재사용성을 높임
- 입력받은 시퀀스 자료형(리스트, 튜플 등)에서 최댓값을 반환
- __main__ 블록으로 독립 실행 가능하게 구성
배열 모듈화 및 테스트
모듈로 작성하기
- 함수를 별도 .py 파일에 정의하여 외부에서 가져다 쓸 수 있도록 구성
- import 문으로 불러와 테스트 코드에서 활용 가능
다양한 테스트 실습
- 사용자 입력으로 배열 구성 후 최댓값 도출
- 난수로 배열 구성 후 최댓값 도출
- 문자열, 튜플 등의 다양한 자료형 테스트
배열 원소를 역순으로 정렬하기
핵심 아이디어
- 양 끝 원소의 위치를 바꾸면서 중앙까지 이동
- 총 교환 횟수는 배열 길이 // 2
구현 방식
- reverse_array() 함수 정의
- 반복문을 통해 앞뒤 원소를 교환
기수 변환 (진수 변환 알고리즘)
변환 알고리즘 개요
- 10진수를 다른 진수(n진수)로 바꾸는 과정
- 나머지를 구해가며 각 자리 수를 저장한 뒤, 역순으로 출력
실습 정리
- card_conv() 함수로 진수 변환 구현
- 2진수, 8진수, 16진수 변환 예제 수행
- 변환 과정을 시각화하여 이해도 향상
소수 나열하기
소수의 정의
- 1과 자기 자신만을 약수로 가지는 수
- 합성수와 구분하여 빠르게 필터링 가능
개선된 알고리즘 실습
- 기본 나눗셈 기반 소수 판별
- 소수 목록을 배열에 저장하여 효율적 필터링
- 제곱근을 활용한 연산 최적화
오늘의 회고
배열이라는 자료구조가 단순한 데이터 저장 이상의 의미를 가진다는 것을 다시 한번 느꼈다.
특히 소수 판별 알고리즘의 최적화 과정은, AI 알고리즘의 연산 병목을 줄이고 처리 속도를 개선하는 방식과 유사해 보였다.
AI에서는 수많은 수학 연산과 반복 처리를 다루기 때문에, 불필요한 계산을 줄이고 효율을 극대화하는 것이 모델 성능에 직접적인 영향을 미친다.
즉, 기초 알고리즘을 얼마나 효율적으로 다룰 수 있느냐에 따라 AI의 성능과 자원 활용 효율성까지 달라질 수 있다는 사실이 인상 깊었다.
앞으로의 수업에서도 이처럼 단순한 알고리즘과 구조들이 실제 AI 시스템에서 어떻게 응용될 수 있는지를 계속 연결지어 생각해봐야겠다.
'[kakao x goorm] 생성 AI 응용 서비스 개발자 양성 과정 > 회고록' 카테고리의 다른 글
[kakao x goorm] 재귀 알고리즘의 구조와 원리, 그리고 하노이의 탑까지 (0) | 2025.04.10 |
---|---|
[kakao x goorm] 선형 탐색(Linear Search), 이진 탐색(Binary Search) 과 해시법(Hashing) (0) | 2025.04.10 |
[kakao x goorm] 반복문과 조건문을 활용한 알고리즘 개념 정리 (0) | 2025.04.07 |
[kakao x goorm] 조건부 확률과 베이즈 정리, 나이브 베이즈 분류기 실습까지 (1) | 2025.04.04 |
[kakao x goorm] 벡터와 텐서의 깊은 이해 및 인공지능에서의 중요성 (0) | 2025.04.04 |