전체 글 1851

[TIL] 2022.11.30. (기록)

오늘의 TIL.. 시스템 프로그래밍 강의를 여러 번 들었다. 그리고 웹프 텀 프로젝트가 아직 미완성이라 코드를 많이 짰다. 객지설 실습은 그래도 어느 정도 이해하고 코드를 짠 것 같다. 이래저래 할 일이 많았던 하루였다. 무엇보다 오랜만에 운동한 것이 제일 좋았다.. 이제 컴구를 해보자.. 매일매일 무언가를 한다는 것은 정말 어려운 일인 것 같다.

[TIL] 2022.11.29. [Computer Architecture]

오늘의 컴구 공부. opcode -> 필드는 항상 6:0의 7비트에 있는데 opcode에 따라서는 funct3 (비트 14:12)필드와 funct7 필드(31:25)가 확장 opcode로 사용된다. R-형식 분기 명령어와 분기명령어의 경우에는 첫 번째 레지스터 피연산자가 비트 19:15에 있는데, 적재/저장 명령어에서는 이 필드가 베이스 레지스터로 사용된다. R-형식 명령어와 분기 명령어의 경우에는 두 번째 레지스터 피연산자가 비트 24:20에 있다. 저장 ㅁ여령어의 경우에는 이 필드가 메모리에 저장될 레지스터 피연산자를 나타낸다. 간단하기 위해서는 규칙적인 것이 좋다. 신호 이름 0 1 RegWrite 아무 일도 생기지 않는다. Write Register 입력이 지정하는 레지스터에 Write data ..

[백준] #11722번 Dynamic Programming python

https://www.acmicpc.net/problem/11722 11722번: 가장 긴 감소하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} www.acmicpc.net 이것은 가장 긴 증가하는 부분 수열의 반대 버전이다. 코드는 아래와 같다. import sys num = int(input()) num_list = list(map(int, sys.stdin.readline().rstrip().split())) dp = [0 for i in range(num)] for i in range(..

[백준] #15988번 Dynamic Programming python

https://www.acmicpc.net/problem/15988 15988번: 1, 2, 3 더하기 3 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 위 dp 문제를 아래와 같이 풀어보았다. num까지 필요한 것을 점화식에 의해서 풀어보았다. 코드는 아래와 같다. 추가 정보는 아래 링크를 확인하길 바랍니다. https://janghan-kor.tistory.com/71 [백준] #9095번 Dynamic Programming python https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는..

[백준] #9095번 Dynamic Programming python

https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net DP로 점화식으로 풀어내는 문제이다. 해당 문제를 풀기 위해서 손으로 써보길 바란다. number가 1일 경우 1 : 1 number가 2일 경우 2 : 1 + 1 2 : 2 number가 3일 경우 3 : 1 + 1 + 1 3 : 1 + 2 3 : 2 + 1 3 : 3 number가 4일 경우 4 : 1 + 1 + 1 + 1 4 : 1 + 1 + 2 4 : 1 + 2 + 1 4 : 2 + 1 + 1 4 : 3 + 1 4 : 1 + 3 4 : 2 + 2 위와 같이 1, 2, 4, 7, 13, ...

[TIL] 2022.11.28. [Computer Architecture]

오늘의 TIL. 컴퓨터 구조의 단순한 구혀넹 대해 서술해보고자 한다. RISC-V ALU는 제어 입력 4개를 사용하는 다음 4개의 조합을 정의하고 있다. 0000 -> AND 0001 -> OR 0010 -> ADD 0110 -> Subtract ALU는 명령어 종류에 따라 이 네 가지 기능 중 하나를 수행한다. ld, sd -> 메모리 주소를 계산하기 위해 덧셈용으로 ALU를 사용. R-형식 -> 명령어의 7비트 funct7 필드와 funct3 필드 값에 따라서 4가지 연산 중 하나를 수행하게 된다. 조건부 분기 beq -> 두 피연산자에 뺄셈을 한 후 결과가 0인지 아닌지 테스트한다. 이 경우 0이라면 ZERO function에 의해 1이 된다. (system의 ZF == 1인 것과 같은 원리로 보고..

[백준] #11053번 Dynamic Programming python

https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net DP문항 풀이. 증가하는 부분 수열. 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 코드는 아래와 같다. import sys num = int(input()) num_list = list(map(int, sys.stdin.readline().rstrip().split())) dp ..

[백준] #1149번 Dynamic Programming python

https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net DP문제로 분류 되며, 거리 구하기 문제이다. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다. 코드는 아래와 같다. def main(): n = int(input()) dp = [] for _ in range(n): dp.appe..

[백준] #1912번 Dynamic Programming python

https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 오늘의 DP문제는 연속합이다. n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. O(n^2)의 복잡도를 갖는다. 코드는 아래와 같다. import sys num = int(input()) num_list = list(map(int, sys.stdin.readline().rst..

[TIL] 2022.11.27. [Single Datapath]

가장 간단한 데이터패스는 모든 명령어를 한 클럭 사이클에 실행하도록 시도하는 것이다.이것은 어느 데이터패스 자원도 명령어당 두 번 이상 사용될 수 없음을 의미한다. 두 개의 다른 명령어 종류들이 데이터패스 구성 요소를 공유하기 위해서는 그 구성 요소의 입력에 여러 개의 연결을 허용해야 하며, 멀티플렉서와 제어신호를 사용해서 그 입력들 중 하나를 선택해야 한다. * 데이터 패스 구축 산술/논리 명령어 연산과 메모리 명령어 연산은 매우 비슷하나 다음과 같은 점이 다르다. 산술/논리 연산 명령어는 ALU를 사용하되, 두 입력이 모두 레지스터에서부터 온다. 메모리 명령어 역시 주소를 계산하기 위하여 ALU를 사용하지만, ALU이 두 번째 입력은 명령어의 12비트 변위 필드를 부호확장한 값이다. R-형식 명령어는..