전체 글 121

[python]백준 1010번: 다리 놓기(Combination)

# 1010 다리 놓기 https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 코드 import math T = int(input()) for _ in range(T): n, m = map(int, input().split()) print(math.comb(m, n)) 📝 풀이 강을 기준으로 n이 서쪽이고 m이 동쪽이다. m에서 겹치지 않게 n만큼 뽑아주면 된다. 예제를 보면 2C2, 5C1, 29C13와 같은 값이 나온다. 그래서 딱 보자마자 조합 ..

Algorithm 2023.01.05

GPU(그래픽 처리 장치) 개념 및 CPU와의 차이점

✅ GPU란? GPU는 Graphic Processing Unit(그래픽 처리 장치)의 약어로 컴퓨터 시스템에서 그래픽 연산을 빠르게 처리하여 결과값을 모니터에 출력하는 연산 장치이다. 1990년대 중반까지만해도 3D 그래픽은 주로 CPU로 구현하였으나 게임 등 그래픽 연산의 수요가 높아짐에 따라 더 빠르고 실시간 그래픽 처리가 필요했다. ✅ CPU와 GPU 차이점 CPU(직렬 처리방식) CPU는 속도는 빠르지만 한 번에 한 가지씩 일을 처리한다. CPU 내부의 많은 부분은 캐시 메모리로 채워진다(CPU와 RAM 사이의 성능 차이로 인한 병목을 막기 위함) CPU가 처리할 것을 RAM에서 불러와 임시로 Cache Memory에 저장해 처리 속도를 높인다. 현재의 CPU들은 DRAM들에 비해 속도가 많이 ..

Computer Science 2023.01.05

IPv4와 IPv6 개념 및 차이점

✅ IP 주소 IP는 Internet Protocol의 약자로 기기간 네트워크 통신을 할 때 쓰는 프로토콜을 의미한다. IP에서 IP기기의 주소를 나타내는 것이 바로 IP주소이다. 우편배달로 예를 들면 IP주소는 배달 주소를 나타내게 된다. 데이터를 정확하게 송수신하기 위해서는 IP주소가 필요하다. ✅ IPv4 IPv4는 3자리 숫자가 4마디로 표기되는 방식이다. 각 마디는 옥텟(octet)이라고 부른다. 위 주소는 내부적으로 32비트, 각 마디당 8bit로 처리된다. 예를 들어 192.168.123.123은 11000000.10101000.1111011.1111011으로 표시된다. ✅ IPv4 클래스 Class 첫번째 옥텟 첫번째 옥텟의 값의 범위(10진수) 이론적 IP주소 범위 A class 0xxx..

Computer Science 2023.01.05

[python]백준 12851번: 숨바꼭질 2(BFS)

# 12851 숨바꼭질 2 https://www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 코드 from collections import deque n, k = map(int, input().split()) visited = [0] * 100001 q = deque([(n, 0)]) fast, way = 10 ** 6, 0 while q: now, time = q.popleft() visited[now] = 1 if no..

Algorithm 2023.01.04

[python]백준 2579번: 계단 오르기(DP)

# 2579 계단 오르기 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 코드 n = int(input()) list_ = [int(input()) for _ in range(n)] dp = [0] * n if len(list_)

Algorithm 2023.01.04

[python]백준 1463번: 1로 만들기(DP)

# 1463 1로 만들기 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 코드 n = int(input()) dp = [0] * (n+1) for i in range(2, n + 1): dp[i] = dp[i-1] + 1 if i % 2 == 0: dp[i] = min(dp[i], dp[i//2] + 1) if i % 3 == 0: dp[i] = min(dp[i], dp[i//3] + 1) print(dp[n]) 📝 풀이 문제에서는 1로 만들기 위한 세 가지 가정을 제시했다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나..

Algorithm 2023.01.04

도메인(domain) 가볍게 살펴보기

개발자가 아니여도 컴퓨터를 자주 사용하는 사람이라면 도메인(domain)이라는 말을 들어봤을 것이다. 오늘은 도메인이 어떤것인지 가볍게 살펴보고자 한다. ✅ 도메인이란? 우리가 흔히 알고 있는 도메인은 바로 인터넷 주소이다. IP주소는 기억하기 어렵기 때문에 영문이나 한글로 된 인터넷 주소인 도메인을 사용하고 있다. 우리가 흔히 알고 있는 네이버에 접속하려고 한다면 대부분의 사람들이 www.naver.com 을 입력할 것이다. naver.com이 바로 도메인 주소이다. 주소창에 125.209.222.141 을 입력해도 동일하게 www.naver.com 에 접속이 되지만 사용자가 숫자의 연속인 IP주소를 일일이 외울 수 없기 때문에 쉽게 기억할 수 있는 DNS(도메인 주소 체계)가 만들어졌다. - 도메인은..

Computer Science 2023.01.04

CPU(중앙처리장치) 개념 및 구성 요소

CPU(중앙처리장치)의 개념 CPU(Central Processing Unit)는 마치 사람의 두뇌와 같이 명령어의 해석과 자료의 연산, 비교 등의 처리를 제어하는 컴퓨터 시스템의 핵심 장치이며, 다양한 입력 장치로부터 자료를 받아서 처리한 후 그 결과를 출력장치로 보내는 일련의 과정들을 제어하고 조정하는 일을 수행한다. 중앙처리장치는 제어장치, 연산장치, 레지스터로 구성된다. CPU(중앙처리장치)의 구성 CPU는 제어장치, 연산장치, 레지스터로 구성된다. ✅ 제어 장치(Control Unit): CU 컴퓨터의 모든 동작을 제어하는 역할 담당. 프로그램에서 내리는 명령어를 해석해서 동작이 필요한 장치에 제어 신호를 보내 처리를 지시한다. - 레지스터 사이의 데이터 전송을 감시하고 ALU(연산 장치)의 동..

Computer Science 2023.01.04

크리스마스 커뮤니티, 모닥불(22.11.09 ~ 22.11.21)

22.11.09 ~ 22.11.21 약 1주일 반. 프로젝트가 마무리 되었다. 하나의 서비스를 만들기 위해 5명의 팀원들과 일주일 반동안 같이 시간을 보냈는데 프로젝트가 끝날때 시원섭섭함이 몰려왔다. 나중에 이 글을 봤을 때 지금의 감정이 잊혀지지 않게 일기 형식으로 기록해보고자 한다. 22.11.09 첫 날 팀원들과 어색함 속에 서비스 기획을 했다. 여러가지 아이디어가 오고 가던 중, 내가 사람들이 진짜 이용할만한 서비스를 만들어보자고 제안했다. 사람들이 우리(초보 개발자) 서비스를 이용하기 위해서는 3가지 중 한가지를 충족해야 한다고 생각했다. ​ 첫 번째는 개쩌는 아이디어, 기존에 없어서 사람들이 이용할 수 밖에 없는 서비스. 두 번째​는 개쩌는 편의성, 기존에 있지만 너무 편리해서 사용하게 되는 ..

프로젝트 2023.01.03

[python]백준 18405번: 경쟁적 전염(BFS)

# 18405 경쟁적 전염 https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 코드 from collections import deque n, k = map(int, input().split()) graph = [] data = [] for i in range(n): graph.append(list(map(int, input().split()))) for j in range(n): if graph[i][j] != 0:..

Algorithm 2023.01.03
728x90