본문 바로가기

CS42

[혼공컴운] 명령어의 구조 명령어의 구조 명령어는 크게 연산 코드와 오퍼랜드로 구성되어 있음 - 연산 코드 (Operation Code): 명령어가 수행할 연산 (더해라~ 빼라~) - 오퍼랜드 (Operand): 연산에 사용할 데이터 혹은 그 데이터가 저장된 위치 연산 코드 명령어가 수행할 연산으로 아래 유형의 것들을 수행 데이터 전송 MOVE : 데이터를 옮겨라 STORE : 메모리에 저장하라 LOAD(FETCH) : 메모리에서 CPU로 데이터를 가져와라 PUSH : 스택에 데이터를 저장하라 POP : 스택의 최상단 데이터를 가져와라 산술/논리 연산 ADD/SUBTRACT/MULTIPLY/DIVIDE : 덧셈/뺄셈/곱셈/나눗셈 INCREMENT/DECREMENT : 오퍼랜드에 1을 더하라/빼라 AND/OR/NOT : 논리 연산을.. 2023. 3. 14.
[이코테] 다이나믹 프로그래밍 - 금광 다이나믹 프로그래밍은... 모르겠다... 오늘도 못 풀었다 1-1. 풀이 도중 생각 1) 입력을 2차원으로 변환해주는 코드를 익혀야겠다 2) maz(오른쪽 아래, 오른쪽, 오른쪽 위)로 하면 될 것 같은데 2. 책 풀이 for tc in range(int(input())): # 금광 정보 입력 n, m = map(int, input().split()) array = list(map(int, input().split())) # 다이나믹 프로그래밍을 위한 2차원 dp 테이블 초기화 dp =[] index = 0 for i in range(n): dp.append(array[index:index + m]) index += m # 다이나믹 프로그래밍 진행 for j in range(1, m): for i in .. 2023. 2. 25.
[이코테] 다이나믹 프로그래밍 - 바닥 공사 오랜만에 아예 감을 못 잡겠는 문제였다 1-1. 풀이 도중 생각 1) 주어진 조건이 무조건 2xN인 모양이라 그나마 생각이라도 좀 했는데, 아니었으면 아예 접근도 못했을듯 2) N이 짝수라면 2x1 블록이 없어도 괜찮고 N이 홀수라면 2x1 블록은 무조건 하나 있어야 한다 3) 그 뭐냐 sliding window처럼 슈슉 지나가면서 만들어내는 규칙 같은게 있을 것 같은데 모르겠다 4) 결과를 769,769로 나눈 나머지를 출력하라고 하는데 특이하다 2. 책 풀이 아니 이거 점화식 세우는거 어떻게 생각하는거임????? i-1번째, i-2번째 이런 패턴으로 생각하는 것 같은데 n = int(input()) d = [0] * 1001 # 다이나믹 프로그래밍 진행 (바텀업) d[1] = 1 d[2] = 3 fo.. 2023. 2. 23.
[이코테] 다이나믹 프로그래밍 - 개미 전사 1. 내 풀이 n = int(input()) k = list(map(int, input().split())) dp = [0]*1002 result = 0 for j in range(n): dp[j] = k[j] for i in range(3, n+2): dp[i] = max((dp[i] + dp[i-2]), (dp[i] + dp[i-3])) print(dp) print(max(dp[n-2], dp[n-1])) 1-1. 풀이 도중 생각 1) 점화식을 차근차근 생각해보자 2) 결국 a_{n+2}와 a_{n+3} 값 중 최대가 되는 식을 선택해가면 될 것 같다 3) 처음엔 dp 테이블과 k 를 둘 다 사용하는 방식으로 코드를 짰는데, 그러면 값이 누적합산이 안 되어 k를 버리고 dp 테이블만 이용 2. 책 풀.. 2023. 2. 22.