전체 글

BOJ

[백준/BOJ] python 2921번 도미노

언어: python 번호: 2921 제목: 도미노 등급: 브론즈 3 ​ 풀이 과정: 크기가 n인 도미노 세트를 n의 값에 따라 나눈다고 생각하고 각 도미노에 있는 점의 개수는 다음과 같다. f(0) = (0, 0) -> 1개 f(1) = f(0) + (1, 0) + (1, 1) -> f(0) + 1 + 2 개 f(2) = f(1) + (2, 0) + (2, 1) + (2, 2) -> f(1) + 2 + 3 + 4 개 f(3) = f(2) + (3, 0) + (3, 1) + (3, 2) + (3, 3) -> f(2) + 3 + 4+ 5 개 이때 수열의 합을 이용하여 i번째 도미노 세트에 있는 점의 개수의 합은 (3*i**2+3*i)//2임을 알 수 있다. 크기가 n인 도미노 세트에 있는 모든 점의 개수의 ..

혼공단

[혼공단 9기] 혼공컴운 4주차

기본 미션 p.304의 확인 문제 1번 풀고 인증하기 선택 미션 Ch.11(11-2) 준비 큐에 A, B, C, D 순으로 삽입될 때 선입 선처리, 최단 작업 우선, 라운드 로빈, 우선 순위 스케줄링에서 어떤 프로세스로 CPU를 할당 받는지 정리해보기 A, B, C, D에 대한 설명이 없어서 개념 정리만 했다. 개념 정리 CPU 스케줄링 알고리즘 우선순위 스케줄링(priority scheduling) : 프로세스들에 우선 순위를 부여하고, 가장 높은 우선 수위를 가진 프로세스부터 실행한다. 기아 현상(starvation)이 발생할 수 있어 에이징(aging)으로 방지한다. 다단계 큐 스케줄링(multilevel queue scheduling) : 우선 순위별로 준비 큐를 여러 개 사용하는 방식. 다단계 ..

BOJ

[백준/BOJ] python 1149번 RGB거리

언어: python 번호: 1149 제목: RGB거리 등급: 실버1 ​ 풀이 과정: ​DP(동적계획법)으로 풀 수 있다. 집의 색깔은 빨강, 초록, 파랑 중에 하나로 칠해야 한다. 이때 i번째(1 i-1번째 집이 초록 또는 파랑 중에 비용이 적은 것 i번째 집은 초록 > i-1번째 집이 파랑 또는 빨강 중에 비용이 적은 것 으로 칠하면 된다. 2차원 배열 DP[n][3]을 만들어 n번째 열에 n번째 집을 칠하는 색깔에 따라 생기는 비용의 총합을 저장해 가장 작은 값을 출력하면 된다. 예제 입력 1 3 26 40 83 49 60 57 13 89 99 dp[n][3] 1번째 2번째 3번째 모든 집을 칠하는 비용 빨강 26 min(40, 83) + 49 = 89 min(96, 73) + 13 = 86 86 초..

자기계발/독서

최원영의 「비전공자를 위한 이해할 수 있는 IT 지식」을 읽고

책 소개 우리는 매일 스마트폰으로 메시지를 보내고, 컴퓨터로 일을 한다. 또 음식점에서 키오스크로 주문하고, 가상현실에서 게임을 즐긴다. IT는 더 이상 전문가들만의 이야기가 아니다. 우리의 삶 곳곳을 IT가 점령하고 있고, 그 속도는 계속해서 빨라지고 있다. 이제 IT를 모르고선 세상을 이해하기 어려운 시대가 되었다. 『비전공자를 위한 이해할 수 있는 IT 지식』은 비전공자를 위한 ‘IT 기초 문법서’로, 한 번쯤 들어봤을 프로그래밍 언어, 운영체제, 네트워크, API, JSON, 데이터베이스, 이미지 처리, 프레임워크, 라이브러리, 깃(Git), 디자인 이슈 등 다양한 지식을 담고 있다. 복잡하게 얽혀 있어 한 번에 이해하기 어려웠던 각각의 지식들을 친숙한 이야기로 쉽게 풀어냄으로써 IT 산업의 전체..

BOJ

[백준/BOJ] python 1912번 연속합

언어: python 번호: 1912 제목: 연속합 등급: 실버 2 풀이 과정: DP를 이용한다. 숫자들을 리스트로 입력받고, for문으로 리스트를 돌면서 최댓값만 저장한다. ​dp[i] =max(arr[i], dp[i-1] + arr[i]) 점화식은 위와 같다. 연속된 합을 구해야하기 때문에 여태까지 더한 값보다 더 큰 값을 만나면, 최댓값이 바뀌는 것이다. 이렇게 모인 최댓값들 중에 가장 큰 값을 출력하면 된다. ​ 코드: # 1912 n = int(input()) arr = list(map(int, input().split()) dp = [0] * n dp[0] = arr[0] for i in range(1, n): dp[i] = max(arr[i], dp[i-1] + arr[i]) print(max..

BOJ

[백준/BOJ] python 2447번 별 찍기 - 10

언어: python 번호: 2447 제목: 별 찍기 - 10 등급: 골드 5 ​ ​ 풀이 과정: 재귀를 이용해서 푼다. 크기 3의 패턴을 array로 만든다. ​ ​ 코드: # 2447 n = int(input()) arr = ["***", "* *", "***"] cnt = -1 while n: cnt += 1 n //= 3 for i in range(1, cnt): l1 = [j*3 for j in arr] l2 = [j+" "*3**i+j for j in arr] arr = [*l1, *l2, *l1] print("\n".join(arr)) 메모: 결국 못 풀고 답지 봤는데 이해는 되도 내가 짜기는 어렵다... 재귀함수 개념은 이해하고 피타고라스채는 익숙해졌지만 그림 그리는 건 문제를 많이 안 풀어..

혼공단

[혼공단 9기] 혼공컴운 3주차

기본 미션 선택 미션 ​RAID의 정의와 종류 : 주로 하드 디스크와 SSD를 사용하는 기술로, 데이터의 안전성 혹은 높은 성능을 위해 여러 개의 물리적 보조기억장치를 하나의 논리적 보조기억장치처럼 사용하는 기술 RAID0 : 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식. 속도가 빠르지만, 하드 디스크 중 하나만 문제가 생겨도 정보를 읽지 못한다. RAID1 : RAID0의 복사본을 만드는 방식. 복구가 간단하지만 속도가 느리고 용량이 적어진다. RAID4 : RAID0에 패리티 비트(오류를 검출하고 복구하기 위한 정보)를 추가한 방식. RAID1보다 용량은 크지만 병목 현상이 있다. RAID5 : RAID4에서 패리티 정보를 분산시켜 병목 현상을 해소한다. RAID6 : RAID..

혼공단

[혼공단 9기] 혼공컴운 2주차

기본 미션 p. 125 확인 문제 2번 p. 155 확인 문제 4번 ​ ​ 선택 미션 코어와 스레드, 멀티 코어와 멀티 스레드의 개념을 정리하기 코어: 전통적으로 생각하는 CPU의 구조로 명령어를 실행하는 부품들이 모인 부품 조합이다. 스레드: 실행 흐름의 단위. 한 번에 이루어지는 명령이라 생각한다. 하드웨어적 스레드와 소프트웨어적 스레드로 나뉜다. 멀티 코어: CPU 하나에 코어가 여러개로 성능이 더 높은 걸 말한다. 멀티 스레드: 하나의 코어로 여러 명령어를 동시에 처리하는 CPU의 기술을 말한다. 예시) 인텔의 하이퍼스레딩 1) 명령어 파이프라이닝: 명령어가 겹치지 않게 CPU의 기능을 나누어 사용하는 것. 2) 슈퍼스칼라: 여러개의 파이프라인을 사용하는 것. 3) 비순차적 명령어 처리: 파이프라..

kyj0015
기록용 블로그