비트 메모리 컴퓨터 안에는 비트만 존재하고 비트의 상태는 on과 off만 있음 즉, 컴퓨터는 비트 상태가 on인지 off인지만 기억할 수 있음 1비트 컴퓨터 메모리의 그림이고 4개의 NAND게이트를 사용함 입력 2개 출력 1개 i: 기억하고 싶은 비트 입력 o: 기억된 비트를 출력 s: i를 쓸지 말지 결정하는 입력 단자 제어 a, b, c: 전선 메모리 동작 과정 s가 on 일 때 a: off, on -> on b: on, on -> off c: b가 off이기 때문에 -> on o: on, on -> off a: on, on -> off b: off, on -> on c: a가 off이기 때문에 on, on -> off o: off, off -> on s가 off 일 때 i = off, s = off..
탐욕법 Greedy 최적의 해에 가까운 값을 구하기 위해 사용함 여러 경우 중 하나를 결정해야할 때마다, 매순간 최적이라고 생각되는 경우를 선택하는 방식으로 진행하여 최종적인 값을 구하는 방식 최적의 값이라고 단언할 수는 없음 예시 문제 동전 문제 지불해야하는 값이 4750원 일 때 10원 50원 100원 500원 동전으로 동전의 수가 가장 적게하여 지불하시오. 풀이 금액이 큰 동전을 최대한으로 지불해야함 탐욕법을 통해 매순간 최적의 동전 수를 구함 coin = [500, 100, 50, 10] def min_coin_cnt(value, coin): total_coin_cnt = 0 details = list() coin.sort(reverse = True) for co in coin: co_num = ..
컴퓨터 속도와 능력 컴퓨터가 만능이 된 이유는 작업처리 속도가 빠르기 때문! 컴퓨터 작업 처리 속도는 전기가 움직이는 속도를 따름 전기와 빛은 물리적 성질이 비슷하기에 전기의 속도는 빛의 속도만큼 빠름 빛은 1초에 30만 Km를 이동할 수 있고 이는 1초에 지구를 7바퀴 반이나 돌 수 있는 속도 전기가 전선을 타면 속도는 절반으로 줄지만 그럼에도 빠른 속도임을 알 수 있음 컴퓨터 안에 서로 가장 멀리 떨어져 있는 부품 사이의 거리가 30cm라고 한다면 전기가 30cm 이동할 때 단순한 작업 하나를 처리할 수 있고 컴퓨터는 초당 5억번의 작업을 처리할 수 있다는 것을 의미한다. 실제로는 더 좁은 공간에 부품들이 밀접해있고 기술이 좋아져 개별 부품안에 수백만 개가 넘는 게이트를 집적하여 사용한다. 컴퓨터 비..
사진 저장을 하고 보니 빈화면만 저장이 되어 있었다 이유는 순서가 틀렸기 때문...! plt.show() plt.savefig() 빈화면이 나오시는 분들 코드 show를 먼저쓰고 그 다음에 savefig()를 썼을거다. 순서만 바꿔주면 된다 해결 순서 바꿔쓰기 plt.savefig() plt.show()
DFS 깊이 우선 탐색 한 노드의 자식을 타고 끝까지 순회한 후, 다시 돌아와서 다른 Node들의 자식을 타고 내려가며 순회함 DFS 방식 : A -> B -> D -> E -> F ->C -> G -> H -> I -> J 구현 코드 # 그래프 생성하기 graph = dict() graph['A'] = ["B", "C"] graph['B'] = ["A", "D"] graph['C'] = ["A", "G", "H", "I"] graph['D'] = ["B", "E", "F"] graph["E"] = ["D"] graph["F"] = ["D"] graph["G"] = ["C"] graph["H"] = ["C"] graph["I"] = ["C", "J"] graph["J"] = ["I"] def bfs(gr..
https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 1. 처음엔 조합 solution으로 접근함 2를 최대로 쓰는 값을 구하고 (ex n = 7 , (2, 2, 2, 1)) 2를 1 두개로 변환하여 이에 대한 조합을 구함 from itertools import permutations def solution(n): bin_n = bin(n)[2:] cnt_2 = 0 cnt_1 = 0 ans = 0 if bin_n[-1] == '1': cn..
BFS 너비 우선 탐색 정점들과 같은 레벨에 있는 노드들을 먼저 탐색하는 방식 DFS는 깊이 우선 탐색으로 정점의 자식들을 먼저 탐색하는 방식 BFS 방식 : A -> B -> C -> D -> G -> H -> I -> E -> F -> J 한 단계식 내려하면서 같은 level의 노드를 순회함 구현 코드 graph = dict() graph['A'] = ["B", "C"] graph['B'] = ["A", "D"] graph['C'] = ["A", "G", "H", "I"] graph['D'] = ["B", "E", "F"] graph["E"] = ["D"] graph["F"] = ["D"] graph["G"] = ["C"] graph["H"] = ["C"] graph["I"] = ["C", "J"] ..
https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 n이 홀수라면 ans에 1을 더하고 n // 2를 해준다. n // 2한 값이 홀수라면 ans에 1을 더하고 n // 2해준다. 이를 반복하다보면 아래와 같이 규칙을 발견할 수 있다. 이를 재귀용법으로 구현함 def solution(n): ans = 0 n = n return cnt(n, ans) def cnt(n, ans): if n == 1: ans += 1 return ans if..