전체 글215 MIPS + MIPS Operations MIPS 레지스터 MIPS의 레지스터는 $0~$31의 범용 레지스터 32개와 PC(Program Counter), LO/HI의 특수 레지스터로 구성된다. - Program Counter는 다음에 수행할 기계어의 위치를 담고 있는 레지스터이며, Low, High 레지스터는 곱셈과 나눗셈의 결과를 저장하기 위한 레지스터이다.- 32개의 범용 레지스터를 구분하기 위해 5비트(\(2^5=32\))가 필요하다.비트(bit)- binary digit- 1비트로 2가지(0, 1)의 정보를 표현할 수 있음 -> N비트로 \(2^N\)가지 정보 표현 가능바이트(byte)- 1 byte = 8 bits- 바이트는 1개의 영문자를 기억하는 최소 단위 워드(word)- 컴퓨터 내부의 데이터 처리 및 전송의 단워- 1 1wor.. 2024. 10. 13. 백준 17298: 오큰수(java) 문제풀이 수열을 저장할 배열 A[]와 스택 stack을 사용하고, 이때 stack의 원소로는 배열의 원소가 아닌 인덱스가 들어간다. for문을 순회하며 A[stack.peek()]과 A[i]을 비교하고, A[stack.peek()] 자세한 내용은 예제 1을 풀이하며 설명하겠다. i = 0스택이 비어 있으므로 스택에 첫 번째 인덱스를 push한 후 시작한다.0 i = 1stack.isEmpty() = false이므로 A[stack.peek()]과 A[i]을 비교한다. A[0] (=3) 1 i = 2stack.isEmpty() = false이므로 A[stack.peek()]과 A[i]을 비교한다. A[1] (=5) 12 i = 3stack.isEmpty() = false이므로 A[sta.. 2024. 10. 13. 백준 2473: 세 용액(java) 문제풀이 2467번 문제와 동일하게 풀이하되, sols[] 배열 전체를 돌며 sols[left] + sols[right] + sols[i](0 특성값 범위가 -10억 이상, 10억 이하로 매우 크므로 sols와 sum, min 등을 모두 long 타입으로 선언해야 한다. 전체 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(.. 2024. 10. 11. 백준 2467: 용액(java) 문제풀이 투 포인터와 이분 탐색을 이용하는 문제이다. 알고리즘은 아래와 같다.1. left = 0, right = N-12. while(left 3. sum = sols[left] + sols[right]4. if(abs(sum) 5. min = abs(sum)6. res_left = left, res_right = right //res_left, res_right는 현재까지 가장 0에 가까운 용액을 만들어내는 특성값7. if(sum > 0): //합이 양수라면 더 작은 sols[right]에 대해 sum이 0에 더 가까워질 가능성 有8. right --9. else: //합이 음수일 때도 마찬가지10. left ++ 전체 코.. 2024. 10. 11. Introduction to System Software 시스템 소프트웨어란? 사용자 또는 응용 프로그램의 요구에 따라 컴퓨터 하드웨어 자원의 제어/관리를 담당하는 소프트웨어- 운영체제(OS), 언어처리기(Compiler, Assembler), 유틸리티 프로그램 등으로 구성- 좁은 의미의 시스템 S/W는 OS만을 포함- Machine Dependent: 이때 machine이란 CPU를 말하며, 시스템 S/W는 ISA(Instruction Set Architecture)에 의존적 >> 시스템 S/W는 Application과 대비되는 개념Instruction Set Architecture(ISA): 기계어 집합 구성컴퓨터 하드웨어와 소프트웨어 사이의 interface- Instruction(Operator, Operand, 연산 결과), Register, Memo.. 2024. 10. 10. 백준 1806: 부분합(java) 문제풀이 투 포인터 기법을 사용하여 다른 부분합 문제들과 동일하게 풀이하되, 합이 S 이상인 연속된 부분합 중 "가장 짧은 것"을 구해야 한다는 점에만 주의하면 된다.arr[left]부터 arr[right]까지의 누적 합 sum이 S보다 커질 때까지 right 포인터를 한 칸씩 이동하며 sum을 증가시키고, 가장 짧은 부분 합을 구해야 하므로 sum이 S보다 처음 커진 이후로는 left 포인터를 한 칸씩 이동하며 sum>S 이도록 하는 최대의 left를 구한다. 전체 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public cl.. 2024. 10. 8. 백준 1253: 좋다(java/python) 문제풀이 오름차순 정렬한 배열 A[]에 투 포인터 기법을 사용하여 풀이할 수 있다. 낮은 인덱스부터 탐색할 left와 높은 인덱스부터 탐색할 right 포인터를 선언하고, for문을 순회하며 오름차순 정렬한 A[i]를 순서대로 탐색한다. 현재 요소(A[i])가 sum = A[left] + A[right]보다 크면 right을 1 감소시키고, A[i] for(int i=0; iA[i]) { right--; } else if(sumleft 포인터는 항상 right 포인터의 왼쪽에(낮은 인덱스에) 위치해야 하므로 while문의 조건을 left 여기에 "어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면" 의 조건을 위해 left나 right가 i와 같을 경우 반복을 건너뛰는 작업을 추가하면 알고리즘은.. 2024. 10. 7. 백준 1940: 주몽(java/python) 문제풀이 이중 for문을 사용해, i를 기준으로 j를 i부터 N까지 1씩 증가시키며 i번째 원소와 j번째 원소의 합이 M이 될 때 count++하는 풀이를 떠올릴 수 있지만, 이 방식은 \(O(N^{2})\)의 시간 복잡도를 가지므로 시간 초과 오류가 표시된다.//오류 코드for(int i=0; i 따라서 배열을 정렬한 후, 시간 복잡도가 \(O(N)\)인 투 포인터 기법을 활용해야 한다.(길이가 N인 배열 내에서 탐색하는 투 포인터 기법에서 왼쪽 인덱스와 오른쪽 인덱스를 각각 left, right라 했을 때, 항상 left \(O(N)\)) 투 포인터 기법을 사용해 재료 배열 materials[] 내에서 합이 M인 두 원소를 찾는 알고리즘을 작성하면 아래와 같다. 탐색하기 전에 materials[] 배.. 2024. 10. 1. 백준 10986: 나머지 합 구하기(java) 문제풀이 모듈러(modulo) 연산의 성질을 알고 있어야 시간 제한 내에 해결할 수 있는 문제다. \(A\;mod\;B=R\) 에서 \(mod\)를 모듈러 연산자라 하고, 이때 \(R\)은 \(A\)를 \(B\) 로 나눈 나머지이다. 자바, 파이썬 등에서는 % 연산자로 표기한다. 모듈러 연산에서 분배 법칙이 성립하는데, 이 중 1번, 2번 공식을 풀이에 이용할 것이다.\((a\;mod\;n+b\;mod\;n)\;mod\;n=(a+b)\;mod\;n\)\((a\;mod\;n-b\;mod\;n)\;mod\;n=(a-b)\;mod\;n\)\((a\;mod\;n\times{b\;mod\;n})\;mod\;n=(a\times{b})\;mod\;n\)입력받은 N개의 정수를 저장할 arr[N]과, arr[i-1] +.. 2024. 9. 30. 백준 2750: 수 정렬하기(java/python) 문제풀이 버블 정렬으로 풀이하거나, 내장 함수 (파이썬)list.sort() 또는 (자바)Arrays.sort()를 사용해 간단하게 해결할 수 있다. 1. python_버블 정렬(Bubble Sort) 버블 정렬은 인접한 두 데이터의 크기를 비교하는 정렬 방법이다. 이중 for문을 사용하므로 \(O(N^{2})\)의 시간복잡도를 가진다. 앞뒤의 원소를 비교해, 앞의 원소가 더 크다면 뒤의 원소와 자리를 바꾼다.N=int(input())arr=[0]*Nfor i in range(N): arr[i]=int(input())for i in range(N-1): for j in range(N-1-i): if arr[j]>arr[j+1]: temp=arr[j] .. 2024. 9. 30. 이전 1 2 3 4 5 6 7 ··· 22 다음