728x90
반응형
SMALL

2024/11 25

[컴퓨터구조] CPU 설계 방식을 알아보자.

명령어로 할 수 있는 연산, 주소 지정 방식 등은 CPU마다 조금씩 차이가 있다.똑같은 코드로 만든 프로그램임에도 CPU가 이해하고 실행할 수 있는 명령어가 달라 어셈블리어도 다를 수 있다. 명령어 집합 설계 (Instruction Set Architecture, ISA)명령어 집합이란 CPU가 이해할 수 있는 명령어들의 모음을 말한다.실행 파일은 명령어로 이루어져 있고 서로의 컴퓨터가 이해할 수 있는 명령어가 다르기 때문에 CPU마다 ISA가 다를 수 있다.ISA는 명령어 병렬 처리 기법들을 도입하기 유리하다. 1. CSIC: 복잡하고 다양한 명령어들을 활용하는 CPU 설계 방식다양하고 강력한 기능의 명령어 집합을 활용하기 때문에 명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용한다.다양하고 강력..

CS/컴퓨터구조 2024.11.19

[컴퓨터구조] CPU 3가지 구성요소에 대해 알아보자.

CPU는 메모리에 저장된 명령어를 읽어 들이고 읽어 들인 명령어를 해석하고 실행하는 부품을 여러 개 포함하는 부품이다. CPU는 산술논리 연산장치, 레지스터, 제어장치로 구성된다.  1. 산술논리 연산장치 (ALU)ALU는 계산을 수행하는 CPU의 핵심 부품이다.ALU는 산술 연산과 논리 연산, 두 가지 주요 작업을 처리한다. 1.1 받아들이는 정보피연산자: 레지스터로부터 받아들인다.제어 신호: 제어장치로부터 받아들이며 수행할 연산을 알려준다. 1.2 내보내는 정보연산을 수행한 결과는 특정 숫자나 문자가 될 수도 있고 메모리 주소가 될 수도 있다.이 결괏값은 바로 메모리에 저장되지 않고 일시적으로 레지스터에 저장된다.ALU는 계산 결과와 더불어 플래그(추가 정보)를 보낸다. 1.3 플래그플래그는 연산 결..

CS/컴퓨터구조 2024.11.18

[Python] 카펫

✏️ 문제 문제 파악처음에는 temp_b, temp_y를 두어 이 두 값이 각각 brown, yellow와 같을 때의 width, height를 리턴하는 방향으로 코드를 짰는데 기본 예제부터 시간 초과가 났다.. 그래서 height의 값이 하나하나 올리는데 대신 가로 길이는 세로 길이보다 크거나 같다는 조건이 있으므로 이를 조건문으로 두어 yellow 값이 (width - 2) * (height- 2) 일 때의 가로와 세로 길이를 출력하도록 코드를 짰다.  코드def solution(brown, yellow): total = brown + yellow for height in range(3, total): width = total // height ..

[Python] 영어 끝말잇기

✏️ 문제 문제 파악중복된 단어가 있는 지 확인은 words 배열 내에 해당 단어를 count 했을 때 2 이상인 지로 확인했다. 중복된 단어가 또 나오는 지 확인할 때 단순히 중복된 단어가 있으면 bool 상태만 변경해서 중복된 단어가 또 나왔는 지 확인하는 방향으로 코드를 짰다.근데 bool 타입으로 하면 배열 내에 중복된 단어가 두 개 이상일 때 앞에 중복되었다고 체크한 단어랑 지금 단어가 같은 지 확인이 안됐다.  그래서 중복되면 dup라는 배열에 넣고 뒤에 중복 단어가 나오면 dup 배열에 있는 지 확인했다.dup 배열에 있으면 단어를 중복해서 말한 거고, dup 배열에 없으면 단어를 중복해서 말한 게 아니게 된다.  코드def solution(n, words): index = -1 ..

[Python] 구명보트

✏️ 문제 문제 파악처음엔 배열에 pop()을 해서 len(people)의 값이 0이 될 때 while 반복문을 끝내는 방향으로 짰는데 pop(0) 메소드를 실행하면 0 인덱스 뒤에 있는 요소들이 인덱스를 다시 배정받아야하는데 이때 많은 시간이 소요되어 효율성 테스트 1번에서 시간초과가 떴다. 그래서 배열의 내용을 건들이지 않는 투 포인터 알고리즘으로 풀었따.  코드시간초과 풀이def solution(people, limit): answer = 0 people.sort() while len(people) > 0: # 최소 몸무게 이하 if limit - 39 = (people[0] + people[-1]): people.pop(0) ..

[Python] 점프와 순간 이동

✏️ 문제 문제 파악이 문제는 시간 초과 때문에 시간 좀 썼는데 알고보니 아주 간단하게 풀렸었다..if n % 2 == 1: ~ else: ~if n % 2 == 1: ~ elif n % 2 == 0: ~1번으로 작성해서 시간초과가 떴는데 2번으로 수정하니 바로 해결되었다. 생각보다 else 조건 처리하는 데 시간이 좀 드는 것 같다..  코드def solution(n): ans = 0 while n != 0: if n % 2 == 1: ans += 1 n -= 1 elif n % 2 == 0: n /= 2 return ans

[Python] 가장 많이 받은 선물

✏️ 문제 문제 파악처음엔 준 사람이랑 받은 사람 구분하려고 { "muzi" : ["frodo", "frodo"] ... } 이런 식으로 딕셔너리 쓰려고 했는데준 사람과 받은 사람, 서로 받은 선물의 수를 비교할 때 복잡해질 것 같았다.  생각해보니 friends 배열에 이름이 차례대로 들어오고 굳이 이름으로 구분 안해도 될 것 같아서 friends의 인덱스를 활용해 이차원 배열을 사용해서 서로 받은 선물의 수를 비교했다.  코드def solution(friends, gifts): people = [[0] * len(friends) for _ in range(len(friends))] cnt = {} # 선물 지수 gift = [0] * len(friends) # 받는 선물 수 ..

[Python] 성격 유형 검사하기

✏️ 문제 문제 파악R과 T, C와 F 는 세트(?)이기 때문에 이 세트를 살리기 위해 딕셔너리를 각각 나눠주면서 튜플을 사용했다.그리고 유형이 반대로 들어올 수도 있기 때문에 반대에 해당하는 유형도 배열에 넣어줘서 딕셔너리의 값을 더할 때 인덱스 [0]과 인덱스 [1]로 구분해서 더해주었다.  코드def solution(survey, choices): answer = '' ary = ['R', 'T', 'C', 'F', 'J', 'M', 'A', 'N'] aryC = ['RT', 'TR', 'CF', 'FC', 'JM', 'MJ', 'AN', 'NA'] category = {'R' : 0, 'T' : 0}, {'C' : 0, 'F' : 0}, {'J' : 0, 'M' : 0}, {..

[Python] 신고 결과 받기

✏️ 문제 문제 파악매치하기 힘들 때는 손으로 적어가면서 정리하는 게 훨씬 잘된다! id 딕셔너리에는 { 유저 ID : [유저가 신고한 ID] } 를 주었고 stop 딕셔너리에는 { 유저 ID : 신고당한 횟수 } 를 주어서 신고당한 횟수가 k 이상이면 id 딕셔너리와 매치해서 인덱스 값을 결과 배열에 추가했다.  코드def solution(id_list, report, k): answer = [0] * len(id_list) id = {} stop = {} for i in id_list: id[i] = [] stop[i] = 0 for r in report: s, e = r.split(' ') ..

[Python] 1번 / 동영상 재생기

✏️ 문제 문제 파악조건이 너~~~~~무 많았다........... 그래서 반례를 잘 생각해봐야 하는 문제 내가 정리한 조건은 다음과 같다.오프닝 시작 위치 명령 처리 후 시작 위치 대해초가 59초 이상이면 분 += 1, 초 %= 60초가 0초 이하이면 분 -= 1, 초 += 60분과 초가 00:00 이하이면 분 = 0, 초 = 0비디오 시간보다 크면 분 = 비디오 시작 분, 초 = 비디오 시작 초오프닝 시작 위치  시작 위치 = 오프닝 끝나는 위치그리고 난 분과 초를 처리하는 과정에서 2차원 배열 total에 대해 total[1] = total[0] 이런식으로 값을 주고 total[0]에 대한 값을 건들인 적이 없는데 나중에 출력해보니 total[1]을 바꿀때마다 total[0] 값이 변했었다.아마 복..

728x90
반응형
LIST