끄적끄적 코딩
article thumbnail
[프로그래밍 언어론] 언어 부류와 컴파일러 (2)
프로그래밍 언어론 2019. 10. 23. 13:21

언어 설계에 영향 1. 컴퓨터 구조 2. 프로그래밍 방법론 폰 노이만 컴퓨터 구조 절차형 구조 fetch-decode-execute의 순환과정 fetch는 메모리의 한 명령어를 읽음. decode는 명령어의 op-code를 해독 execute는 해독한 코드를 실행 stored programming concept방식 = 메모리에 프로그램을 적재해 놓고, 한 문장씩 fetch, decode, execute하는 방식 언어 부류 명령형 언어 폰 노이만 컴퓨터 영향을 가장 많이 받은 언어 변수가 있음. 할당문 = A = B; 를 예로 들면 오른쪽 B값을 왼쪽의 A에 저장하는 것 오른쪽 편을 RHS, 왼쪽 편을 LHS라고 한다. RHS는 X는 X의 값(value)를 의미. LHS는 X는 X의 위치(location)..

[프로그래밍 언어론] 프로그래밍 언어론 (1)
프로그래밍 언어론 2019. 10. 23. 12:53

프로그래밍 영역 개념적(conceptual)인 것을 실제적(physical)인 것으로 mapping하는 과정을 구현(implementation)이라고 한다. 구현을 한꺼번에 할 수 없기 때문에 알고리즘(algorithm)을 통해서 순차적으로, 절차적으로 하는 방법을 찾아낸다. 과학응용 분야 배열, 행렬, 부동 소수점을 주로 처리 반복문 제어문 사용 Fortran을 주로 사용 사무응용 분야 여러가지 종류의 양식들을 표현하고 보고서로 나타낼 수 있도록 사용 COBOL을 주로 사용 (10진수, 문자 데이터 표현 저장 가능) 인공지능 분야 수치 계산보다는 기호 위주의 계산을 주로 사용 스트링 매칭, 패턴 매칭, 이미지캐릭터 매칭 LISP를 주로 사용(리스트 처리 언어) LISP는 재귀를 기본으로 사용, 순환 종..

article thumbnail
[C++] 백준 2805번 나무 자르기
알고리즘 2019. 10. 15. 00:55

이분탐색으로 문제를 풀었습니다. M미터의 나무를 가져가기 위해서 전체 나무들이 X가 되게 자를 때 X갖 가장 큰 경우의 값을 출력하는 문제입니다. left와 right를 설정해준 다음 가운데 값을 비교하면서 이분탐색을 해주어서 문제를 해결하였습니다. #include #include #include using namespace std; typedef long long ll; int n, m; int result = 0; ll sum = 9876543210; ll leftN, rightN; ll arr[1000001]; void binary_find(ll x) { ll temp = 0; if (leftN > rightN) { return; } for (int i = 0; i < n; ++i) { if (ar..

article thumbnail
[C++] 백준 2512번 예산
알고리즘 2019. 10. 15. 00:34

이분탐색으로 문제를 해결했습니다. 예산의 상한선을 지정해서 예산과 최대한 비슷하게 만드는 문제입니다. 1부터 N까지의 수를 전부 계산하면 시간초과가 발생하게 됩니다. 그래서 sort를 해준 다음 이분탐색을 통해서 반틈씩 이동하면서 가장 가까워지는 값을 찾아냈습니다. #include #include #include using namespace std; typedef long long ll; int n; int result = 0; ll sum = 0; ll budget; ll leftN, rightN; ll arr[10001]; void binary_find(ll x) { ll temp = 0; if (leftN > rightN) { return; } for (int i = 0; i < n; ++i) { ..

article thumbnail
[C++] 백준 17521번 Byte Coin
알고리즘 2019. 10. 14. 08:20

투자를 해서 돈을 가장 많이 벌었을 때의 금액을 구하는 문제입니다. 그래프가 내려갈때는 판매를 하고, 올라갈때는 구매를 해서 계산해주면 됩니다. #include #include #include #include using namespace std; typedef long long ll; int main(int argc, char* argv[]) { ll n, w; ll x; ll arr[20]; cin >> n >> w; for (int i = 0; i > arr[i]; } for (int i = 0; i < n - 1; ++i) { if (arr[i] < arr[i +1]) { x = w / arr[i]; w = w % arr[i]; x = arr[i + 1] * x; w ..

article thumbnail
[C++] 백준 17520번 Balanced String
알고리즘 2019. 10. 14. 08:18

DP로 문제를 해결했습니다. 균형잡힌 문자열을 찾는 문제로 0과 1의 개수차이가 1개 이하인 경우의 수를 구하는 문제입니다. 2로 나누어떨어지면 값을 그대로 가져오며, 나누어 떨어지지 않는 경우 이전 값의 2배를 증가시켰습니다. #include #include #include using namespace std; typedef long long ll; int main(int argc, char* argv[]) { int n; ll DP[100010]; cin >> n; DP[1] = 2; for (int i = 2; i

article thumbnail
[C++] 백준 11378번 열혈강호 4
알고리즘 2019. 10. 13. 23:14

이분매칭으로 문제를 해결했습니다. https://j3sung.tistory.com/409 [C++] 백준 11375번 열혈강호 이분 매칭으로 문제를 해결하였습니다. N명의 직원이 있고 해야할 일이 M개가 있을 때 직원들이 할 수 있는 일들이 정해져있고 하나의 일만 할 수 있습니다. 이 때 일을 잘 분배해서 가장 많이 할 수 있는 일의.. j3sung.tistory.com 이 문제와 같이 일을 한개할 때의 경우를 계산합니다. 그리고 추가적으로 일을 할 수 있는 경우를 찾습니다. 찾는 경우 카운트를 증가해주고 벌점의 수만큼 이를 반복해줍니다. 중간에 추가적으로 할 수 있는 경우가 없으면 반복문을 종료하고 count를 출력합니다. #include #include using namespace std; vecto..

article thumbnail
[C++] 백준 11377번 열혈강호 3
알고리즘 2019. 10. 13. 21:04

이분매칭으로 문제를 해결했습니다. https://j3sung.tistory.com/409 [C++] 백준 11375번 열혈강호 이분 매칭으로 문제를 해결하였습니다. N명의 직원이 있고 해야할 일이 M개가 있을 때 직원들이 할 수 있는 일들이 정해져있고 하나의 일만 할 수 있습니다. 이 때 일을 잘 분배해서 가장 많이 할 수 있는 일의.. j3sung.tistory.com 11375 열혈강호와 유사한 문제입니다. 다른점으로는 2개의 일을 할 수 있는 사람이 k명 있는 점입니다. 1개의 일을 할 수 있는 경우에 대해서 11375번 문제와 동일하게 풀고 다시 첫번째 사람부터 마지막 사람까지 일을 할 수 있는 경우를 찾습니다. 이는 최소 0번부터 최대 K번까지 가능합니다. #include #include usi..

검색 태그