알고리즘
43 posts
그림으로 배우는 알고리즘 제 7장: 알고리즘의 계산량(2)

제 7장: 알고리즘의 계산량(3) 74. 알고리즘의 계산량 → O(빅-오) 표기법 알고리즘 계산량의 일반적 표기법 → O(빅-오) 표기법 측정 대상 알고리즘의 계산량을 처리하는 데이터 개수 n을 기준으로 표기 예시: n개 데이터 계산량이 n에 비례 → 으로 표기 예시 2: 1~N까지의 합을 하나하나 더해 계산 → N이 무한대일 경우 N의 계수 3과 +3 영향이 거의 사라짐 → 계산량: 예시 3: 1~N까지의 합을 N(N+1)/2 로 계산 → 데이터 개수에 의존하지 않고 계산량 항상 3 → N에 의존하지 않는 계산량 = 예시 4: 버블 정렬 → N 값이 커짐에 따라 N 값에 의존하는 이중루프(반복 안 반복) 처리 → N * N 번 작업 → 계산량 = $$ 예시 5: 이진 검색(바이너리 서치) → 1번째 탐색 범위가 N일경우 1번 조작 시 검색범위 1/2로 좁혀짐 → 반복 횟수가 k일 경우 $N*\frac{1}{2}^k=1$ → 해당 식 변형 시 $2^k$ = N → k = $l…

September 20, 2022
알고리즘
그림으로 배우는 알고리즘 제 7장: 알고리즘의 계산량(1)

제 7장: 알고리즘의 계산량(1) 72. 알고리즘의 계산량: 시간 계산량, 영역 계산량 알고리즘의 성능(얼마나 효율적인가)을 평가: 시간 계산량과 영역 계산량이 기준 시간계산량 해당 알고리즘 실행 시 소요시간 연산, 조건 비교, 변수 대입 등의 조작(단계)들을 하나의 단위로 삼아 각 실행횟수로 측정(프로그램 실행 및 종료시간까지의 시간 측정의 경우 컴퓨터 성능 혹은 주변기기 / 데이터 입출력 소요시간에 영향을 받기 때문에 적절하지 않음) 영역 계산량 해당 알고리즘 실행 시 사용되는 공간적 자원의 크기 상수 영역, 변수 영역, 배열 영역, 스택 등 작업 영역 등의 총 합계(=메모리 영역) 73. 시간 계산량 → 연산, 조건 비교, 대입 등 조작 횟수로 측정 1~N의 합계를 구하는 계산 예시 방법1: 하나하나 더해 합을 계산 1단계: 합계 저장 변수 SUM을 0으로 초기화 2단계: 더할 값을 저장하는 변수 VALUE에 1 대입 3단계: 변수 VALUE가 N보다 작거나 판정 결과가 참이…

September 16, 2022
알고리즘
그림으로 배우는 알고리즘 제 6장: 그 외의 알고리즘들(4)

제 6장: 그 외의 알고리즘들(4) 71. 재귀 호출을 이용해 N의 팩토리얼 구하기 재귀호출: 함수에서 값을 구하기 위해 자기자신을 호출하는 표현이 포함된 상황 재귀 호출에서 자기 자신을 다시 호출하기만 하는 경우에는 무한 루프에 빠질 수 있으므로 아래 등을 적용해 무한루프를 막아야한다. 자기자신을 다시 호출하는 경우와 단순하게 결과값만 반환하는 경우를 분리 n의 팩토리얼(n!)을 구하는 알고리즘을 이용해보자. n! = 1 * 2 * 3 * … * (n-1) * n 이 때 (n-1)을 미리 구했다면 (n-1)! * n 으로 구할 수 있다. 즉, n!을 구하는 함수를 fact(n)이라고 했을 경우 fact(n) = fact(n-1)! * n과 같이 함수가 스스로를 호출하도록 표현할 수 있다. n = 1 → 1! = 1 n ≥ 2 일 경우 fact(n-1)! * n을 반환 칼럼: 알고리즘과 플로우 차트(순서도) 플로우차트: 알고리즘의 처리 흐름(해결 방법)을 시각적으로 명확화 미리 약…

September 14, 2022
알고리즘
그림으로 배우는 알고리즘 제 6장: 그 외의 알고리즘들(3)

제 6장: 그 외의 알고리즘들(3) 69. 그래프에서 최적 경로를 구하는 데이크스트라 알고리즘 최단 거리 및 최저 운임 이동경로 등의 최적경로를 구할 경우 그래프를 이용하는 데이크스트라 알고리즘이 유용 그래프로 아래 3 요소를 표현 한 뒤 최적 경로 구함 꼭짓점: 출발점, 종착점 및 경유 지점 변: 꼭짓점과 꼭짓점을 연결하는 경로 변의 가중치: 경로를 통과하는 비용(시간 혹은 운임) 최적 경로 구하는 절차 1단계: 출발점의 [검색된 플래그]를 켠다. 그 외 모든 꼭짓점의 [검색됨 플래그]를 끈다. 2단계: [검색된 플래그]가 켜진 모든 꼭짓점과 변으로 연결된 [검색됨 플래그]가 켜진 꼭짓점 목록을 구한다. 3단계: [검색된 플래그]가 켜져있는 꼭짓점으로 향하는 경로의 ‘가중치’합계와 2단계에서 구한 꼭짓점으로 향하는 ‘변의 가중치’합계가 가장 적은 꼭짓점을 새롭계 선택한다. 4단계: 3단계에서 선택한 새 꼭짓점이 종착점일 경우 해당 꼭짓점까지의 경로를 최적경로로 삼는다. 종착점이 …

September 13, 2022
알고리즘
그림으로 배우는 알고리즘 제 6장: 그 외의 알고리즘들(2)

제 6장: 그 외의 알고리즘들(2) 67. 연립방정식의 해를 구하는 ‘가우스 소거법’ 가우스 소거법: 미지수를 하나씩 줄여 나가는 작업을 통해 연립 방정식을 푸는 알고리즘 왼쪽의 n차 연립 방정식을 행렬로 표현한 결과는 아래와 같다. $$ a_{11}x_1+a_{12}x_2+…+a_{1n}x_n=b_1\ a_{21}x_1+a_{22}x_2+…+a_{3n}x_n=b_2\ …\ a_{n1}x_1+a_{n2}x_2+…+a_{nn}x_n=b_n\ $$ $$ A = \begin{pmatrix} a_{11} & a_{12} & … & a_{1n} \ a_{21} & a_{22} & … & a_{2n} \ … & … & … &… \ a_{n1} & a_{n2} & … & a_{nn} \end{pmatrix} \begin{pmatrix} x_1 \ x_2 \ … \ x_n \end{pmatrix} = \begin{pmatrix} b_1 \ b_2 \ … \ b_n\end{pmatrix} $$…

September 12, 2022
알고리즘
그림으로 배우는 알고리즘 제 6장: 그 외의 알고리즘들(1)

제 6장: 그 외의 알고리즘들(1) Column: 관계형 데이터베이스를 이용한 정렬과 검색 관계형 데이터베이스: 대량의 데이터를 효율적으로 처리(개발과 유지보수 용이) 프로그램을 두개의 역할로 나눠 분담하게 할 수 있기 때문 프로그램을 실행하는 코드 데이터 관리 데이터베이스를 활용해 특정 데이터를 정렬하거나 검색 → SQL 언어 사용 SQL문의 지식과 질 좋은 알고리즘의 학습으로 데이터를 효율적으로 검색하거나 정렬할 수 있다. 66. 미분을 활용해 고차 방정식의 해를 구하는 ‘뉴턴법’ 뉴턴법: 함수 f(x)가 x축과 만날 때, f(x)와 도함수 f’(x)를 이용해 f(x)=0의 해 x를 구하는 알고리즘 예시: $x^2=k$ 일때, $x=±\sqrt{k}$ 이므로, $f(x)=x^2-k$의 올바른 해는 $k$이다. 위의 예시에서 $k$를 구하는 방법 함수 그래프의 임의의 점 $P_0(x_0, f(x_0))$ 에서의 점선의 기울기 → $f(x)=x^2-k$의 도함수 $f’(x)=2x$…

August 27, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (9)

제 5장: 정렬과 검색(9) 64. 비교할 필요가 없는 문자열은 건너 뛰고 고속으로 검색하는 ‘KMP 알고리즘’ KMP(Knuth, Morris, Pratt) 알고리즘: 문자열 안에서 부분 문자열을 검색할 때, 부분 문자열로 검색에 실패한 위치를 바탕으로 다음번 검색 위치를 효율적으로 결정하는 알고리즘 실패함수에 다음과 같은 정보를 넘겨 각 조건에 따라 다음 번에 문자 비교를 시작해야 할 가장 효율적 위치를 구한다. 부분 문자열이 불일치된 문자의 위치 나열된 부분 문자열의 문자 데이터 예시: 문자열 STR “ABCABCDA’안에서 문자열 SUB “ABCD”를 찾을 경우 STR[0]~[2] 3문자와 SUB의 1문자부터 문자 3개가 일치하나 STR[3]의 ‘A’와 SUB 4번째 문자(’D’)가 불일치 여기서 문자열 SUB의 문자가 모두 다르므로, STR[1]~[2]의 (’BC’)와 SUB[2]의 ‘C’는 부분 문자열의 1번째 문자와 일치할 수 없다. 다음에는 STR[3]~과 SUB[…

August 24, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (8)

제 5장: 정렬과 검색(8) 62. 정렬된 데이터 안에서 고속 검색하는 이진 검색(바이너리 서치) 바이너리 서치: 검색할 데이터 열이 오름차/내림차 순으로 이미 정렬되었다면 빠르게 검색할 수 있음 검색할 데이터 열의 중앙값 M1을 기준점으로 만든다. M1의 값이 찾고자하는 Mt와 일치할 때까지 검색 범위를 좁혀간다. 중앙 값 M2, 그 중앙의 중앙의 중앙 값 M3 등을 T와 비교해 일치할때까지 검색 범위를 좁혀간다. 예시: 배열 DATA에 오름차순으로 저장된 N개의 데이터 중 원하는 데이터 T를 찾아내기 1단계: 중앙위치 M ⇒ N/2로 만듬 2단계: 검색범위 안 데이터 개수가 1개 이상일 경우 3~4단계 반복 3단계 T = DATA[M]일 때 → 데이터를 찾아냈으므로 반복 중단. T < DATA[M]일 때 → DATA[M] 및 DATA[M]의 오른쪽(큰 값)에 데이터 T는 절대 없으므로, 검색 범위를 M보다 왼쪽(작은값)으로 한다. T > DATA[M]일 때 → DATA[M] 및…

August 23, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (7)

제 5장: 정렬과 검색(7) 60. 검색이란 여러 개의 데이터 안에서 원하는 데이터를 찾아내는 것 검색: 여러 개의 데이터 안에서 원하는 데이터를 찾아내는 알고리즘. 정렬만큼 빈번히 사용되는 중요 요소 예시 카드번호로 사용자 정보를 검색해 사용자가 쇼핑을 할 수 있는 지 여부를 판별 진찰권의 환자 ID로 전자 의료 기록을 찾아냄 키워드가 적힌 사이트들을 전세계 웹사이트 중에서 찾아내 목록을 표시 검색 알고리즘의 종류 순차 검색(리니어 서치) 이진 검색(바이너리 서치) 간단한 문자열 검색 KMP 알고리즘을 사용한 문자열 검색 BM 알고리즘을 사용한 문자열 검색 61. 처음부터 끝까지 샅샅이 데이터를 비교하는 순차 검색(리니어 서치) 순차 검색(리니어 서치: Linear search): 랜덤으로 나열된 데이터 열 안에서 원하는 데이터를 찾기 위해 원하는 데이터와 일치하는지 여부를 1번째 데이터부터 조사하는 방법 N개의 데이터 중 원하는 데이터를 찾기까지 평균적으로 N/2 번 비교해야하…

August 22, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (6)

제 5장: 정렬과 검색(6) 58. 기존 데이터와 크기를 비교해 데이터를 2등분하는 퀵정렬 퀵 정렬: 정렬에 소요되는 시간이 매우 짧은 고속 알고리즘(정렬할 데이터 수가 많을 경우 단순 교환 정렬, 단순 삽입 정렬보다 처리속도가 빠름) 데이터 열 중 임의의 데이터 P(기준값)을 선택 P보다 작은값을 하나, 큰 값을 하나로 묶어 새로운 데이터열 생성 데이터 P의 위치를 고정시키는 작업이 중요 예시: 11개의 데이터열을 퀵정렬을 통해 오름차순 정렬 임의의 데이터를 하나 골라 P라는 이름을 붙인다 나머지 데이터 중 P보다 작은 데이터 → S열 P보다 큰 데이터 → L열 예를 들어 P보다 작은 데이터가 3개, 큰 데이터가 7개일 경우 정렬순서는 아래와 같다. ([S1] [S2] [S3]) [P] ([L1] [L2] [L3] [L4] [L5] [L6] [L7]) 이 때 P의 위치를 4번째로 고정 시키는 것이 중요하다. 동일한 작업을 S열, L열에 적용한다(임의의 값 Ps, Pl을 골라 정렬…

August 20, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (5)

제 5장: 정렬과 검색(5) 56. 정렬된 여러 개의 데이터 열을 합체시키는 병합(merge) 병합(Merge)알고리즘을 활용한 정렬 알고리즘 → 병합 정렬 병합 알고리즘이란? 정렬된 여러 개 데이터 열들을 정렬된 하나의 데이터 열로 만드는 알고리즘. 예시 데이터 열 A, …, A1, A2, A3, …, Aj 데이터 열 B, …, B1, B2, B3, …, Bk 데이터 열 C, …, C1, C2, C3, …, Cm → 위 세개 열을 병합해 하나의 정렬된 데이터 열 P(P1, P2, P3, … Pn)을 생성 이 때 P의 1번째 데이터, 즉 데이터 열 A, B, C 에서의 최소값은 각 데이터열이 오름차 순으로 정렬되어있으므로 반드시 A1, B1, C1중 하나이다. 따라서 P1 = A1, B1, C1의 크고 작음만 따지면 구할 수 있다 B1이 최소값이라면 b1을 꺼내 P1에 넣는다. B2 가 데이터 열 B의 첫번째 데이터가 된다 P2의 값은 A1, B2, C1 중 하나이다. 데이터가 없…

August 15, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (4)

제 5장: 정렬과 검색(4) 54. 정렬된 데이터를 비교해 올바른위치에 삽입하는 단순 삽입 정렬 단순 삽입 정렬: 데이터열 안의 특정 데이털르 기준으로 해당 데이터보다 앞에 위치하는 데이터들과 차례로 비교해 해당 데이터를 열 안에서의 정렬조건과 일치하는 위치에 삽입해 데이터를 정렬하는 알고리즘 정렬 순서 가정: 단순 삽입 정렬 오름차순 정렬. 배열응ㄹ 정렬된 부분(앞) 및 정렬되지 않은 부분(뒤)로 나누어 처리 시작 시 정렬된 부분은 1번째 데이터 1개, 정렬되지 않은 부분은 2번째 이후의 모든 데이터. 데이터 열(D0, D1, …, Dn)에서 정렬 부분은 D0~Di-1이며, 정렬되지 앙ㄴㅎ은 부분의 1번째 데이터를 Di(1 ≤ i ≤n) 1단계; k=0으로 만든다 2단계: k < i 일동안 3~4 단계를 반복 3단계: Dk > Di일때 반복처리 종료 4단계: k를 1 증가(다음 데이터와 비교 위함) 5단계: W에 Di를 임시 저장(6단계에서 Di 값을 덮어쓰므로 임시저장) 6단계…

August 14, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (3)

제 5장: 정렬과 검색(3) 52. 최소 값(최대 값)을 골라 이미 정렬된 마지막 요소와 교환하는 단순 선택 정렬 1~100 숫자가 적힌 카드를 오름차순으로 정렬할 때의 작업 순서 카드 중 가장 숫자가 작은 카드를 찾는다 1번의 카드를 오름차 순으로 나열하는 곳 왼쪽으로 옮긴다. 남은 카드 중 가장 숫자가 작은 카드를 찾는다 3번 카드를 오름차 순으로 정렬하는 카드의 끝에 둔다. 정렬할 데이터가 저장된 배열 DATA를 오름차순으로 정렬할 때의 순서 1단계; 정렬되지 않은 부분 안에서 최소 값을 찾는다 2단계: 최소값을 선택해 정렬되지 않은 부분의 1번째 요소와 교환한다(이 작업으로 최소 값을 정렬된 부분의 마지막 요소로 만든다) 3단계: 정렬되지 않은 부분의 시작 위치를 1칸 뒤로 옮긴다(이 작업으로 정렬되지 않은 부분의 범위를 하나씩 줄인다) 4단계: 정렬되지 않은 부분의 요소 수가 1일 될 때까지 1~3단계를 반복한다. 53. 이웃한 데이터들을 교환해 나가는 단순 교환 정렬(버…

August 13, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (2)

제 5장: 정렬과 검색(2) 50. 다른 배열(bucket)에 데이터를 저장하고 정렬하는 버킷 정렬 버킷 정렬: 가장 간단한 정렬 알고리즘이나 장소적 자원(배열의 크기)를 많이 소모한다. 정렬 순서 정렬할 데이터 중 가져올 수 있는 값의 범위만큼 버킷을 준비 정렬할 데이터를 버킷 번호에 맞춰 저장 모든 데이터를 버킷에 넣은 후, 1번째 버킷부터 차례대로 버킷 데이터를 가져옴 정렬 순서 1단계; 버킷 역햘을 할 배열 BUCKET을 준비하고 전체 내용을 Empty 값으로 초기화 2단계: 정렬할 배열(N개)의 첨자를 저장하는 저장하는 변수 I를 0으로 초기화 3단계: I가 N미만일 경우 아래의 4~6단계 반복 4단계: VALUE에 DATA[I]를 ㄷ입 5단계: BUCKET[VALUE]에 VALUE를 대입 6단계 I의 값을 1 증가 7단계: BUCKET의 처음 요소부터 차례대로 값이 저장되어있을 경우 데이터를 꺼냄 Empty 값 → 데이터가 비어 있음을 나타내는 값으로 취급하는 데이터 외…

August 12, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (1)

제 5장: 정렬과 검색(1) 48. 정렬(sort)이란 대상을 특정한 규칙에 따라 정렬하는 것 데이터 → 사물(객체)에 부여한 특성 예: 학생 객체의 특성 → 이름, 키, 기말고사 성적 등 정렬(sort): 특정한 사물이 가진 특성을 데이터 삼아 여러 개의 사물을 정렬 시키는 처리 정렬 순서의 종류 오름차순: 작은 순서대로 나열하기 내림차순: 큰 순서대로 나열하기 49. 정렬 알고리즘에는 다양한 종류가 있다 [정렬 알고리즘의 종류] 버킷 정렬 최 대 값의 개수만큼 버킷을 준비한 다음, 그 곳에 데이터를 저장 및 정렬 기수 정렬 숫자의 각 자리를 기준으로 차례대로 데이터 정렬 단순 선택 정렬 데이터 중에서 최소 값(또는 최대 값)을 찾아 1번째 요소 (도는 마지막 요소)의 데이터와 교환 단순 교환 정렬(버블 정렬) 이웃한 데이터끼리 크고 작음을 비교해 올바른 위치로 데이터 이동 단순 삽입 정렬 정렬할 데이터를 이미 정렬된 데이터들 사이의 올바른 위치에 삽입한다. 셸 정렬 정렬할 데이…

August 11, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 기본적인 알고리즘(6)

제 4장: 기본적인 알고리즘(6) 46. 두 변수의 값을 교환할 때는 임시 변수를 사용한다. 변수 X와 Y의 값을 교환 하려면, 아래 순서대로 하면 교환할 수 없다. 변수 Y에 변수 X 값 대입 변수 X에 변수 Y 값 대입(이미 변수 X의 값은 Y값으로 덮어씌워짐) 임시변수를 이용해 값을 임시로 저장해야한다. 1단계: 변수 W에 변수 Y 값 대입 2단계: 변수 Y에 변수 X 값 대입 3단계: 변수 X에 변수 W 값 대입 47. 두 수의 최대공약수는 유클리드 호제법으로 구한다 최대공약수: 0이 아닌 정수들의 공통된 약수 중 가장 큰 수 유클리드 호제법으로 구하면 된다. 호제법: 2개의 수가 서로 나누는 것 정수 X와 Y(X ≥ Y)가 주어졌을 때 X를 Y로 나눈 나머지를 R이라고 하면, X와 Y의 최대공양수는 Y와 R의 최대공약수와 같다. 그러나 X와 0이 남았을 경우 최대공약수는 X로 한다. 정수 X와 Y(X ≥ Y)의 최대공약수를 변수 GCD에 구하는 알고리즘 1단계: 변수 R에…

August 10, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 기본적인 알고리즘(5)

제 4장: 기본적인 알고리즘(5) 44. 시간의 크고 작음을 비교하려면 단위를 초 단위로 통일한다 시간의 크고작음을 계산할 때에는 시간, 분, 초 순서대로 비교하는 알고리즘으로 구할 수도 있지만 초 단위로 시간을 통일시켜 비교하는 것이 더 좋다(컴퓨터는 연산에 특화 되었기 때문) 시 분 초를 초단위로 변환하는 계산식 H시 M분 S초 = H3600 + M60 + S 예: 6시 32분 12초(A) 7 7시 10분 52초(B) 63600 + 3260 + 12 = 32532 (A) 73600 + 1060 + 52 =25832 (B) 45. 시간차를 구할 때에는 초 단위로 바꾸어 뺄셈하고, 다시 시간으로 바꾼다 시간을 초단위로 바꾸는 식 H시 M분 s초 = H3600 + M60 + S 초 단위 값인 TIME을 H시 M분 S초로 변환 1단계: TIME을 3600으로 나눈 몫의 정수 부분 =H 2단계: TIME을 3600으로 나눈 나머지 값이 R 3단계: R을 60으로 나눈 몫이 M 4단계: …

August 09, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 기본적인 알고리즘(4)

제 4장: 기본적인 알고리즘(4) 42. 배열 데이터의 최소 값을 구하려면 최소 값을 저장할 변수를 준비한다 최소값을 구하는 알고리즘은 최대값을 구하는 알고리즘과 유사하나 두 가지가 다르다 최소 값을 저장하는 변수의 초기 값 배열 요소의 비교 논리 최소 값을 구하는 순서 1단계: 최소 값을 저장하는 변수 MIN을 대상 데이터들의 최대 값보다 큰 값으로 초기화한다. 2단계: 첨자를 저장하는 변수 I를 0으로 초기화한다. 3단계: I가 N 미만이라면 4~5단계를 반복한다. 4단계: JUM[I] < MIN이라면, MIN에 JUM[I]를 대입한다. 5단계: I를 1 증가시킨다. 43. 배열 데이터에 등수를 매기려면 순위를 저장할 또 다른 배열을 준비한다. 등수를 구하는 방법 1단계: 배열 RANK의 모든 요소를 1로 초기화한다. 2단계: 첨자를 저장하는 변수 I에 0을 저장한다. 3단계: I이 N미만이라면 4~8단계를 반복한다. 4단계: 첨자를 저장하는 변수 J를 0으로 초기화한다. 5…

August 07, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 기본적인 알고리즘(3)

제 4장: 기본적인 알고리즘(3) 40. 배열 데이터의 평균 값은 반복 처리를 통해 합계와 개수를 구한 후 계산한다 배열의 끝에 저장된 보초 값으로 배열 데이터 개수를 관리하는 배열의 평균값 계산 배열의 합계와 배열의 개수를 구한 뒤 평균 계산 예시: 어떤 학급의 기말점수 (0~100)가 저장된 배열 JUM(배열 끝 보초값 —1)의 평균값은? 평균 = 총점 / 학급 인원 수 학급 인원 수 = COUNT (유효한 요소의 개수를 세는 변수) 총점 = SUM (배열 요소의 합계 값을 저장하는 변수) 1단계: 변수 COUNT와 합계를 저장하는 변수 SUM을 0으로 초기화한다. 2단계: 배열 JUM의 첨자를 저장하는 변수 I를 0으로 초기화한다. 3단계: JUM[I]이 보초 값(-1)을 가리키지 않는 동안, 다음의 4~5 단계를 반복한다. 4단계: Count에 1을 더하고 SUM에 SUM + JUM[I]를 저장한다. 5단계: I에 1을 더한다. 6단계: 평균 값을 저장하는 변수 AVE에 S…

August 06, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 기본적인 알고리즘(2)

제 4장: 기본적인 알고리즘(2) 38. 배열 데이터의 합을 계산하려면 더한 값을 저장할 변수를 준비한다 여러 데이터의 합을 구하는 처리 ⇒ 배열 합계 알고리즘 예시 시험점수의 총 합 계산 일일 입장객의 수를 통해 해당 월 전체 입장객 수 구하기 각 지점의 매출액을 합해 전 지점 매출액 구하기 데이터 N개의 합을 구하는 계산식 DATA[0] + DATA[1] + … + DATA[N-1] 다음과 같은 반복처리를 통해 구할 수 있다. 1단계: 합계를 저장하는 변수 SUM 을 0으로 초기화 2단계: 합계에 더하는 배열 요소를 가리키는 첨자를 저장하는 변수 I를 0으로 초기화 3단계: I가 N 미만이라면 다음 4~5단계를 반복한다 4단계: SUM + DATA[I]를 계산하여 그 값을 SUM에 대입한다 5단계: I의 값에 1을 더한다 39. 배열 안 요소의 개수를 구하려면 카운터를 준비한다 배열 데이터의 요소 개수 미리 고정 값으로 정함 다른 변수로 관리 배열 마지막 요소의 끝에 보초 값…

August 05, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 기본적인 알고리즘(1)

36. 1~N의 합을 구하려면 반복 처리한다. 1~N의 합은 다음 계산식으로 구할 수 있다. 1 + 2 + 3 + … + (N-1) + N 다음과 같이 반복처리를 통해 구할 수 있다. 1단계: 합계를 저장하는 변수 SUM을 0으로 초기화한다. 2단계: 합계에 더할 값을 저장하는 변수 VALUE에 1을 저장한다. 3단계: VALUE에 N 이하인 동안에 다음 4~5단계를 반복한다. 4단계: SUM + VALUE를 계산해 그 값을 SUM에 대입한다. 5단계: VALUE값을 1 증가시킨다. 37. 수열의 값을 유지하려면 배열을 사용한다 다양한 수열의 값을 유지하려면 배열을 사용하는 것이 가장 간단하다. 예: 피보나치 수열을 배열에 저장하고 유지하자 피보나치 수열: n번째(n ≥ 0)의 값을 Fn이라고 했을 때, 아래 조건을 만족하는 수열. F0=0 F1=1 Fn+2 = Fn + Fn+1 (n≥0) 1번째 요소부터 N개(n ≥ 2)의 피보나치 수열을 배열 F에 저장하는 알고리즘은 아래와 같…

August 04, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 자료구조 (7)

1. 그림으로 배우는 알고리즘 제 3장: 자료구조 (7) 35. 정점과 간선으로 항목들의 관계를 그림으로 표현한 것이 그래프 그래프: 2개 이상의 항목이 어떤 관계를 맺고 있는지 주목하고 그 관계를 그림으로 표현한 것. 정점(노드): 표현하는 항목 간선(Edge): 각 항목들의 관계를 표현하는 선 그래프의 간선에는 방향성이라는 특성을 부여할 수 있다 ⇒ 방향있는 그래프 (ex. 일방통행) 방향성이 없는 간선 ⇒ 방향없는 그래프 간선에 가중치(비용)이 있는 그래프. ⇒ 가중 그래프 칼럼. BASE를 0으로? BASE를 1로? 1번째 요소 번호를 1로 정한 프로그래밍 언어 컴퓨터 개발 초창기의 프로그래밍에 자주 사용되던 언어들: Fortran, Pascal, Basic(초기형) 1번째 요소를 0으로 정한 프로그래밍 언어 현재 주류 언어들 C, C++, Java, C#, VisualBasic(BASIC)

August 03, 2022
알고리즘
그림으로 배우는 알고리즘 제 3장 - 자료구조 (6)

1. 그림으로 배우는 알고리즘 제 3장: 자료구조 (6) 33. 부모 노드의 값이 자식 노드의 값보다 항상 적은 이진 트리는 힙(Heap) 힙(Heap): 각 노드의 값이 다음 조건을 충족하도록 관리되는 이진트리 부모 노드의 값은 항상 하위 노드 값보다 작다(또는 부모 노드의 값은 항상 하위 노드 값보다 크다) 첫번째 경우 자식 노드의 값은 둘 중 어느쪽이 크더라도 상관 없음. 위 조건에 따라 관리되는 힙은 뿌리 부분에 모든 값 중 가장 작은 값(또는 가장 큰 값)이 배치됨. 최소 값(또는 최대 값)을 효율적으로 구하는 용도에 적합. 힙을 구현할 때 일반적으로 배열을 사용. 배열 요소 번호 1번 = 힙의 뿌리요소. 깊이가 작은 쪽 → 큰 쪽 노드의 왼쪽 → 오른쪽 34. 해시 테이블은 배열과 리스트를 조합한 자료 구조 해시 테이블(Hash Table): 아래 2개 자료구조가 조합된 것 N개의 요소를 가진 루트 배열이라는 이름의 배열 루트 배열의 각 요소가 가리키는 리스트 먼저 …

July 31, 2022
알고리즘
그림으로 배우는 알고리즘 제 3장 - 자료구조 (5)

1. 그림으로 배우는 알고리즘 제 3장: 자료구조 (5) 31. 마지막 요소까지 이동하면 1번째 요소로 되돌아오는 링 버퍼 1차원 배열의 요소들ㅇ르 처음부터 마지막까지 순서대로 조회하려면 배열 요소를 조회할 때 첨자를 1씩 더해나가면 된다. 링 버퍼: 1차원 배열의 1번째 요소와 마지막 요소를 합쳐 배열 마지막 요소의 다음에도 요소가 존재한다고 만드는 자료구조 예 요소가 10개인 BUFFER라는 1차원 배열 ⇒ BUFFER[9]의 다음 요소를 BUFFER[0]으로 설정 32. 부모 하나에 자식 둘이 딸린 구조는 이진트리 이진트리: 다음 요소를 가리키는 포인터를 2개 가진 단방향 리스트 노드: 이진트리의 구성요소 부모 노드: 자식 노드를 2개 이상 가질 수 없다. 자식 노드: 하위에 자식노드가 있을 경우 부모노드가 된다. 뿌리/루트 노드: 부모노드가 없는 노드 잎/리프 노드: 자식 노드가 없는 노드 깊이: 뿌리에서 특정 노드로 도달하기까지 경로의 길이(루트 노드 = 0 기준)

July 30, 2022
알고리즘
그림으로 배우는 알고리즘 제 3장 - 기본적인 알고리즘(4)

그림으로 배우는 알고리즘 제 3장: 자료구조 (4) 29. N번째 요소의 참조가 빠른 것은 배열, 느린 것은 리스트 구조 N번째 요소 조회 예: 나열된 데이터에서 5번째 요소를 조회 배열 요소 번호를 사용해 바로 찾아낼 수 있다. ARRAY[5] 어떠한 요소를 조회하더라도 모든 시간적 비용은 동일하다. 리스트: 1번째 데이터부터 차례대로 끄능ㄹ 따라가야한다. 1번째 요소를 조회한다. 1번째 요소의 끈을 따라 2번째 요소를 조회한다. 2번째 요소의 끈을 따라 3번째 요소를 조회한다. 3번째 요소의 끈을 따라 4번째 요소를 조회한다. 4번째 요소의 끈을 따라 5번째 요소를 조회한다. ⇒ 요소의 수가 많을 수록 느려진다. 30. 데이터의 삽입/삭제가 빠른 것은 리스트, 느린 것은 배열 데이터 삽입 새로운 데이터를 순서대로 나열된 데이터 열의 특정 위치에 삽입 배열: 삽입 위치 다음에 존재하는 모든 데이터를 뒤로 이동시켜야 한다(예: 삽입 데이터 뒤에 1,000개 데이터 존재 시 데이터 …

July 16, 2022
알고리즘
그림으로 배우는 알고리즘 제 3장 - 기본적인 알고리즘(3)

제 4장: 기본적인 알고리즘(3) 40. 배열 데이터의 평균 값은 반복 처리를 통해 합계와 개수를 구한 후 계산한다 배열의 끝에 저장된 보초 값으로 배열 데이터 개수를 관리하는 배열의 평균값 계산 배열의 합계와 배열의 개수를 구한 뒤 평균 계산 예시: 어떤 학급의 기말점수 (0~100)가 저장된 배열 JUM(배열 끝 보초값 —1)의 평균값은? 평균 = 총점 / 학급 인원 수 학급 인원 수 = COUNT (유효한 요소의 개수를 세는 변수) 총점 = SUM (배열 요소의 합계 값을 저장하는 변수) 1단계: 변수 COUNT와 합계를 저장하는 변수 SUM을 0으로 초기화한다. 2단계: 배열 JUM의 첨자를 저장하는 변수 I를 0으로 초기화한다. 3단계: JUM[I]이 보초 값(-1)을 가리키지 않는 동안, 다음의 4~5 단계를 반복한다. 4단계: Count에 1을 더하고 SUM에 SUM + JUM[I]를 저장한다. 5단계: I에 1을 더한다. 6단계: 평균 값을 저장하는 변수 AVE에 S…

July 15, 2022
알고리즘
그림으로 배우는 알고리즘 제 3장 - 기본적인 알고리즘(2)

제 4장: 기본적인 알고리즘(2) 38. 배열 데이터의 합을 계산하려면 더한 값을 저장할 변수를 준비한다 여러 데이터의 합을 구하는 처리 ⇒ 배열 합계 알고리즘 예시 시험점수의 총 합 계산 일일 입장객의 수를 통해 해당 월 전체 입장객 수 구하기 각 지점의 매출액을 합해 전 지점 매출액 구하기 데이터 N개의 합을 구하는 계산식 DATA[0] + DATA[1] + … + DATA[N-1] 다음과 같은 반복처리를 통해 구할 수 있다. 1단계: 합계를 저장하는 변수 SUM 을 0으로 초기화 2단계: 합계에 더하는 배열 요소를 가리키는 첨자를 저장하는 변수 I를 0으로 초기화 3단계: I가 N 미만이라면 다음 4~5단계를 반복한다 4단계: SUM + DATA[I]를 계산하여 그 값을 SUM에 대입한다 5단계: I의 값에 1을 더한다 39. 배열 안 요소의 개수를 구하려면 카운터를 준비한다 배열 데이터의 요소 개수 미리 고정 값으로 정함 다른 변수로 관리 배열 마지막 요소의 끝에 보초 값 …

July 14, 2022
알고리즘
그림으로 배우는 알고리즘 제 3장 - 기본적인 알고리즘(1)

제 4장: 기본적인 알고리즘(1) 36. 1~N의 합을 구하려면 반복 처리한다. 1~N의 합은 다음 계산식으로 구할 수 있다. 1 + 2 + 3 + … + (N-1) + N 다음과 같이 반복처리를 통해 구할 수 있다. 1단계: 합계를 저장하는 변수 SUM을 0으로 초기화한다. 2단계: 합계에 더할 값을 저장하는 변수 VALUE에 1을 저장한다. 3단계: VALUE에 N 이하인 동안에 다음 4~5단계를 반복한다. 4단계: SUM + VALUE를 계산해 그 값을 SUM에 대입한다. 5단계: VALUE값을 1 증가시킨다. 37. 수열의 값을 유지하려면 배열을 사용한다 다양한 수열의 값을 유지하려면 배열을 사용하는 것이 가장 간단하다. 예: 피보나치 수열을 배열에 저장하고 유지하자 피보나치 수열: n번째(n ≥ 0)의 값을 Fn이라고 했을 때, 아래 조건을 만족하는 수열. F0=0 F1=1 Fn+2 = Fn + Fn+1 (n≥0) 1번째 요소부터 N개(n ≥ 2)의 피보나치 수열을 배열 …

July 13, 2022
알고리즘
그림으로 배우는 알고리즘 제3장 - 자료구조(7)

1. 그림으로 배우는 알고리즘 제 3장: 자료구조 (7) 35. 정점과 간선으로 항목들의 관계를 그림으로 표현한 것이 그래프 그래프: 2개 이상의 항목이 어떤 관계를 맺고 있는지 주목하고 그 관계를 그림으로 표현한 것. 정점(노드): 표현하는 항목 간선(Edge): 각 항목들의 관계를 표현하는 선 그래프의 간선에는 방향성이라는 특성을 부여할 수 있다 ⇒ 방향있는 그래프 (ex. 일방통행) 방향성이 없는 간선 ⇒ 방향없는 그래프 간선에 가중치(비용)이 있는 그래프. ⇒ 가중 그래프 칼럼. BASE를 0으로? BASE를 1로? 1번째 요소 번호를 1로 정한 프로그래밍 언어 컴퓨터 개발 초창기의 프로그래밍에 자주 사용되던 언어들: Fortran, Pascal, Basic(초기형) 1번째 요소를 0으로 정한 프로그래밍 언어 현재 주류 언어들 C, C++, Java, C#, VisualBasic(BASIC)

July 04, 2022
알고리즘
그림으로 배우는 알고리즘 제3장 - 자료구조(6)

1. 그림으로 배우는 알고리즘 제 3장: 자료구조 (6) 33. 부모 노드의 값이 자식 노드의 값보다 항상 적은 이진 트리는 힙(Heap) 힙(Heap): 각 노드의 값이 다음 조건을 충족하도록 관리되는 이진트리 부모 노드의 값은 항상 하위 노드 값보다 작다(또는 부모 노드의 값은 항상 하위 노드 값보다 크다) 첫번째 경우 자식 노드의 값은 둘 중 어느쪽이 크더라도 상관 없음. 위 조건에 따라 관리되는 힙은 뿌리 부분에 모든 값 중 가장 작은 값(또는 가장 큰 값)이 배치됨. 최소 값(또는 최대 값)을 효율적으로 구하는 용도에 적합. 힙을 구현할 때 일반적으로 배열을 사용. 배열 요소 번호 1번 = 힙의 뿌리요소. 깊이가 작은 쪽 → 큰 쪽 노드의 왼쪽 → 오른쪽 34. 해시 테이블은 배열과 리스트를 조합한 자료 구조 해시 테이블(Hash Table): 아래 2개 자료구조가 조합된 것 N개의 요소를 가진 루트 배열이라는 이름의 배열 루트 배열의 각 요소가 가리키는 리스트 먼저 …

July 03, 2022
알고리즘
그림으로 배우는 알고리즘 제3장 - 자료구조(5)

[Algorithm]그림으로 배우는 알고리즘 제 3장: 자료구조 (5) 1. 그림으로 배우는 알고리즘 제 3장: 자료구조 (5) 31. 마지막 요소까지 이동하면 1번째 요소로 되돌아오는 링 버퍼 1차원 배열의 요소들ㅇ르 처음부터 마지막까지 순서대로 조회하려면 배열 요소를 조회할 때 첨자를 1씩 더해나가면 된다. 링 버퍼: 1차원 배열의 1번째 요소와 마지막 요소를 합쳐 배열 마지막 요소의 다음에도 요소가 존재한다고 만드는 자료구조 예 요소가 10개인 BUFFER라는 1차원 배열 ⇒ BUFFER[9]의 다음 요소를 BUFFER[0]으로 설정 32. 부모 하나에 자식 둘이 딸린 구조는 이진트리 이진트리: 다음 요소를 가리키는 포인터를 2개 가진 단방향 리스트 노드: 이진트리의 구성요소 부모 노드: 자식 노드를 2개 이상 가질 수 없다. 자식 노드: 하위에 자식노드가 있을 경우 부모노드가 된다. 뿌리/루트 노드: 부모노드가 없는 노드 잎/리프 노드: 자식 노드가 없는 노드 깊이: 뿌리에…

July 02, 2022
알고리즘
그림으로 배우는 알고리즘 제3장 - 자료구조(4)

[Algorithm]그림으로 배우는 알고리즘 제 3장: 자료구조 (4) 그림으로 배우는 알고리즘 제 3장: 자료구조 (4) 29. N번째 요소의 참조가 빠른 것은 배열, 느린 것은 리스트 구조 N번째 요소 조회 예: 나열된 데이터에서 5번째 요소를 조회 배열 요소 번호를 사용해 바로 찾아낼 수 있다. ARRAY[5] 어떠한 요소를 조회하더라도 모든 시간적 비용은 동일하다. 리스트: 1번째 데이터부터 차례대로 끄능ㄹ 따라가야한다. 1번째 요소를 조회한다. 1번째 요소의 끈을 따라 2번째 요소를 조회한다. 2번째 요소의 끈을 따라 3번째 요소를 조회한다. 3번째 요소의 끈을 따라 4번째 요소를 조회한다. 4번째 요소의 끈을 따라 5번째 요소를 조회한다. ⇒ 요소의 수가 많을 수록 느려진다. 30. 데이터의 삽입/삭제가 빠른 것은 리스트, 느린 것은 배열 데이터 삽입 새로운 데이터를 순서대로 나열된 데이터 열의 특정 위치에 삽입 배열: 삽입 위치 다음에 존재하는 모든 데이터를 뒤로 이동…

June 25, 2022
알고리즘
그림으로 배우는 알고리즘 제3장 - 자료구조(3)

제 3장: 자료구조 25. 계산대 앞에 줄을 서듯 대기하는 자료구조가 대기 행렬(큐) 큐(queue)/대기행렬: 먼저 입력한 데이터가 먼저 출력되는 특징을 가진 자료구조. 예: 슈퍼에서 계산하기 위해 기다리는 대기자, ATM기에 줄 서서 기다리는 사람들 대기열의 1번째 사람부터 용무를 보게 된다. 중간에 끼어들거나 & 순서를 어기고 새치기 (X) 먼저 입력한 데이터가 먼저 출력되는 데이터 관리 방법: FIFO(First In, First Out), LILO(Last In, Last Out) 26. 끈으로 엮어 데이터를 관리하는 것이 리스트 1차원 배열 데이터들은 차례대로 빈틈없이 나열된다. 데이터의 순서가 고정되어있다. 데이터 개수 관리: 다른 변수 사용 리스트 데이터들은 모두 떨어져 있지만, 끈으로 묶여 있다. 데이터의 순서가 고정되어있지 않아 데이터의 위치에 구애받지 않는다. 데이터 개수 관리: 다음 데이터에 연결된 끈이 있는지 여부 27. 한쪽 방향에서 데이터를 찾아가는 단방…

May 30, 2022
알고리즘
그림으로 배우는 알고리즘 제3장 - 자료구조(2)

제 3장: 자료구조 22. 다양한 구조의 자료구조들 다섯 가지 배열: 데이터를 빈틈없이 나열한 자료구조(일차원, 이차원, 삼차원 배열 등이 있다) 리스트: 데이터를 순서대로 나열한 자료구조. 데이터들이 화살표로 서로 연결되어있어 떨어진 장소에 위치해도 된다(배열과의 차이점) 스택: 책을 쌓아 올리듯 데이터를 관리하는 구조. 데이터를 넣는 순서와 반대 순서로 데이터를 꺼낸다. 큐(대기 행렬): 계산대에 줄을 서는 것과 비슷하다. 데이터를 넣은 순서대로 데이터를 꺼낸다. 트리: 나무가지가 두개, 세개로 갈라지고 갈라진 끝에서 또 두개 세개로 갈라지듯 퍼져나가는 자료구조 24. 책처럼 쌓이는 자료구조가 스택 스택(Stack): ‘쌓다’ 라는 뜻. 데이터를 쌓아 관리하는 방식. 예: 책상위에 책을 쌓아놓았을 때, 중간에 있는 책을 빼기 위해서는 위에 쌓인 책을 한권 한구너 차례로 뺀 뒤에 원하는 책을 빼야한다. 푸시 데이터를 넣는(쌓는) 작업 팝 데이터를 꺼내는 작업 LIFO(Last I…

May 29, 2022
알고리즘
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(8), 제3장 - 자료구조(1)

제 2장 변수와 배열 21. 문자열의 길이는 문자길이 변수 또는 ‘보초 값’이 관리한다 문자열은 1번째 요소부터 차례로 문자가 저장된 문자 타입의 배열 ⇒ 문자열이 끝날 때 배열이 끝났음을 알려주어야한다. 문자열이 끝남을 알려주는 방법 문자 열 길이 변수를 준비 : 배열 속 문자열 길이를 정수 타입 변수에 저장해 참조한다. 문자 열 끝에 보초 값을 저장 문자열의 구성 문자로 절대로 표시되지 않는 문자 코드(보초 값)를 배열 끝 부분에 저장 일반적으로 숫자 0(문자 ‘0’ 아님)을 사용 Column: 관용적으로 사용되는 변수명 반복문의 반복 횟수를 저장하는 변수 : 반복 처리 알고리즘에서 반복 횟수를 유지하는 정수 타입 변수명은 i, j, k를 자주 사용 배열 첨자로 사용되는 변수 : index, idx 수를 세는 데 사용되는 변수 : count, counter, cnt 문자열을 다루는 변수(배열) : str, string 제 3장: 자료구조 22. 대량 데이터를 효율적으로 관리하기…

May 24, 2022
알고리즘
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(7)

제 2장 변수와 배열 19. 2차원 배열의 각 요소는 2개의 첨자로 구별한다 2차원 배열에서는 행과 열에 대해 각각 ‘0’(또는 ‘1’)로 시작하는 요소번호를 붙여 교차점에 있는 배열요소를 가리킨다. 예시 배열명[행 요소번호][열 요소번호] ⇒ ARRAY[2][6] 배열명(행 요소번호)(열 요소번호) ⇒ ARRAY(2)(6) 배열명[행 요소번호, 열 요소번호] ⇒ ARRAY[2, 6] 배열명(행 요소번호, 열 요소번호) ⇒ ARRAY(2, 6) 20. 문자열은 문자 데이터의 배열이다 문자열은 각 요소에 문자가 저장된 문자 타입 배열이다. 예: 문자열 ‘ABC’: 문자타입 데이터를 저장할 수 있는 배열의 1번째 요소에 문자 ‘A’, 2번째 요소에 문자 ‘B’, 3번째 요소에 문자 ‘C’가 저장된 것이다.

May 23, 2022
알고리즘
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(6)

제 2장 변수와 배열 16. 배열의 각 요소는 요소 번호라는 번호로 구분한다 배열 요소: 배열을 구성하는 ‘상자’ 요소 번호: 첫 번째 배열 요소부터 마지막 배열 요소까지 일련번호를 붙여 어떤 배열요소에 데이터를 넣을지 선택하거나, 어떤 배열 요소의 데이터를 참조할 지 지정. 요소 번호의 시스템은 2가지 존재 BASE 0 : 1번째 요소 번호 0, 마지막 요소 번호 N-1 BASE 1 : 1번째 요소 번호 1, 마지막 요소 번호 N 첨자: 배열의 특정 요소에 접근하기 위해 배열명과 요소 번호를 조합해 가리키는 것 배열명[요소 번호] 배열명(요소 번호) 예: ARRAY[0] ⇒ ARRAY라는 배열의 첫번째 요소를 가리키는 것 15. 배열은 관련된 값을 효율적으로 저장하기 위한 사물함이다 적은 양의 데이터는 변수로 관리 가능하지만 많은 양의 데이터를 생성하려면 그 수만큼의 변수를 생성해야 하므로 비효율적 ⇒ 배열로 관리 배열로 데이터를 관리하면 데이터의 양이 증가하더라도 배열 요소수를…

May 20, 2022
알고리즘
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(5)

제 2장 변수와 배열 14. 동일한 데이터 타입이 연속되면 배열이다 배열: 많은 양의 데이터를 저장하고 유지하기 위해 사용 예시 전교생의 시험 결과(점수) 1년간의 일일 입장객 수 배열에 담을 각각의 데이터들은 반드시 같은 종류여야 한다. 배열에 담을 각 데이터는 반드시 데이터타입이 동일해야한다. 15. 배열은 배열명이라는 이름으로 구별한다. 배열명: 다른 변수, 배열과 구분되는 고유의 이름 배열명의 철칙 배열명은 고유해야한다. 숫자이름과 숫자로 시작하는 이름은 배열명으로 사용할 수 없다. 일반적으로 배열명을 정할때에는 배열 속 데이터 내용을 대표하는 이름을 붙인다. 예시 전교생의 시험 결과(점수): SCORE 1년간의 일일 입장객 수: PEOPLE

May 19, 2022
알고리즘
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(3)

제 2장 변수와 배열 10. 변수는 변수명이라는 이름으로 구별한다 변수명: 변수의 용도가 무엇인지 표시하고 다른 변수들과 구분하기 위한 수당. 변수에는 반드시 변수명을 붙여야 한다. 변수명을 붙일 때의 규칙 변수명은 고유해야한다: 변수명을 사용해 원하는 변수를 반드시 구별할 수 있어야하기 때문 숫자만 사용한 이름, 숫자로 시작하는 이름은 사용할 수 없다: 숫자 데이터(값)과 변수를 구별해야 하기 때문 11. 대입문에는 변수에 값을 대입하는 기능이 있다 변수에 값을 대입할 때에는 왼쪽에 변수명을, 오른쪽에 대입하는 값을 적는 것이 일반적이다. 대입문: 변수에 값을 대입하는 구문 예 1: 변수명 ← 값 예 2: 변수명 = 값 예 3: STR ← “ABC” 예 4: STR = “ABC” 대입문 오른쪽에는 연산자(+, -, *, /)를 사용해 계산식을 작성할 수 있다. 예 1: X ← 10 + 5 (15가 변수 X에 대입된다) 예 2: X = 10 + 5 (15가 변수 X에 대입된다)

May 18, 2022
알고리즘
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(4)

제 2장 변수와 배열 12. 변수를 변수에 대입하면 변수에 저장된 값이 다른 변수에 복사된다 변수명에 다른 변수명을 대입할 수 있다. 예: A = 10 일때, Y = A 로 A를 Y에 대입할 수 있다. 변수명을 변수명에 대입했을 경우, 변수 자체가 들어가는 것이 아니라 변수의 값이 대입된다. 예: Y = A로 대입했을 때, 실제로는 Y = 10 처럼 A의 값인 10이 대입된다. 변수를 포함한 계산식도 변수에 대입할 수 있다. 예: Y = A + 4 (Y = 14가 된다) 13. 변수에도 데이터 타입이 있다. 변수를 정의할때 변수명과 ‘어떤 데이터 타입의 값을 담을 수 있을지’를 함께 정의하게 된다. 변수의 데이터 타입과 일치하는 데이터만 변수에 대입할 수 있다. 예시 정수 타입: 정수타입 데이터만 대입할 수 있다. 실수 타입: 실수 타입 데이터만 대입할 수 있다. 문자 타입: 문자 타입 데이터만 대입할 수 있다. 문자열 타입: 문자열 타입 데이터만 대입할 수 있다. 논리 타입: 논…

May 18, 2022
알고리즘
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(2)

제 2장 변수와 배열 8. 값은 숫자와 문자의 구체적인 표현 값: 데이터를 구체적으로 표현한 것 알고리즘에서 값을 표현할 때에는 숫자나 기호로 표기한다. 정수 값, 실수 값의 표현 ⇒ 0, 1234, -1, 1.23 문자값의 표현 ⇒ ‘A’ 문자열 값의 표현 ⇒ “KOREA”, “알고리즘” ⇒ 문자, 문자열 값을 기호로 묶어 표현하는 것은 숫자 10과 문자열 “10”을 구별하기 위해서이다. 9. 변수는 값을 담는 상자이다. 변수: 데이터(값)을 넣어두는 상자이다. 변수에 데이터(값)을 넣는 작업을 ‘대입한다/할당한다’라고 한다. 변수에는 반드시 하나의 데이터만 담을 수 있다.

May 18, 2022
알고리즘
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(1)

6. 데이터는 다양한 정보이다 알고리즘 = 데이터 + 처리 데이터: 다양한 정보 예시 1: 고기감자 요리 데이터: 고기감자 재료 처리: 요리 방법 예시 2: 최대공약수 구하기 데이터(필요한 정보) 최대 공약수를 구하는 2개의 정수 값 구한 최대 공약수(정수 값) 처리: 최대공약수를 구하는 방법 순서 예시 3: 정보의 순서 정하기 데이터(필요한 정보) 정렬할 값이 담긴 열 정렬 값의 개수 정렬된 결과가 담긴 열 처리: 정보의 순서를 정하는 방법/순서 7. 모든 데이터에는 타입이 있다 데이터 타입: 다양한 정보(데이터)를 그룹화한 것 많이 사용되는 기본 데이터 타입(5가지) 정수 타입(int): 정수(소수점이 없는 값)를 처리하기 위한 데이터 타입 실수 타입(float): 실수(소수점을 포함한 값)를 처리하기 위한 데이터 타입 문자 타입: 문자를 처리하기 위한 데이터 타입 문자열 타입(string): 문자열을 처리하기 위한 데이터 타입 논리 타입(boolean): ‘참’, ‘거짓’을 …

May 14, 2022
알고리즘
그림으로 배우는 알고리즘 제 1장 - 알고리즘이란

최근 파이썬 공부를 하면서 개발자 유투브 영상 등을 틈날때마다 보고있는데 다들 입을모아 알고리즘을 꼭 공부해야한다, 코딩테스트를 위해서 뿐만 아니라 개발자로써 커리어를 쌓기 위해 꼭 필요하다라는 얘기를 들어 매일 조금씩이라도 공부하기 위해 책을 읽으며 기록하려고 한다. 내가 아직 프로그래밍 언어에 대한 이해도가 깊지 않기 때문에, 특정 언어에 얽매이지 않고, 또한 아침 출근 직후 시간에 짬내서 읽기 괜찮은 분량의 책을 찾았는데 이 책이 딱 그 조건에 부합해서 선택해보았다. 앞으로 평일에는 하루에 4페이지 정도 읽고 내용을 간단하게 요약해서 블로그에 올리려고 한다. 제 1장. 알고리즘이란 1. 음식 요리법은 알고리즘 알고리즘(Algorithm); 컴퓨터를 이용해 주어진 과제를 해결하기 위한 처리 절차 과제의 예 최대 공약수를 구한다 정보의 순서를 정해 나열 원하는 정보 검색 현실세게의 다양한 과제의 해결에도 알고리즘의 개념이 사용된다 예: 음식 요리법 치킨카레 만들기 ⇒ 과제 알고…

May 13, 2022
알고리즘