[알고리즘] Greedy Algorithm - Interval Scheduling
·
컴퓨터 과학/알고리즘
Interval scheduling Job j starts 𝑠𝑗 and finishes at 𝑓 𝑗.Two jobs are compatible if they don’t overlapGoal: find maximum subset of mutually compatible jobs일을 가장 많이 사용하는 방법을 찾는 경우를 찾는다고 했을 때 문제입니다.직관적으로 봤을 때 b, e, h를 고를 시 가장 많은 경우의 수를 고려하지만 직관적으로 해결 하는 것이 아닌 다양한 접근법을 이용해서 해결 해보겠습니다.Approach 1) Earliest start time: Consider jobs in ascending order of 𝑠 𝑗일이 시작되는 시간 중에서 가장 먼저 시작되는 일을 기준으로 시작한다...
[알고리즘] 비트마스크(BitMask)
·
컴퓨터 과학/알고리즘
비트마스크란?비트마스크(Bitmask)는 이진수의 비트를 사용해 여러 상태나 조합을 효율적으로 표현하는 기법입니다. 각 비트는 특정한 상태를 나타내며, 비트 연산을 통해 다양한 조합을 처리할 수 있습니다. 비트마스크는 조합 문제나 상태 추적 문제에서 특히 유용하게 사용됩니다. 장점메모리 효율성: 비트를 사용해 여러 상태를 간단하게 저장할 수 있어, 메모리 공간을 절약할 수 있습니다.속도: 비트 연산은 빠르기 때문에, 대량의 데이터를 신속하게 처리할 수 있습니다.조합 관리: 비트마스크를 사용하면 여러 상태를 조합하는 문제를 쉽게 해결할 수 있습니다.코드의 간결성: 비트 연산을 사용하면 코드가 간결해지고 가독성이 좋아질 수 있습니다.단점이해의 어려움: 비트마스크의 개념이 초보자에게는 다소 복잡하게 느껴질 수..
백준 / 치즈 / 2636번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 치즈 / 2636번 (골드 4단계)문제 사이트: https://www.acmicpc.net/problem/2636 문제 설명 나의 풀이from collections import dequedef bfs(ch): q = deque() # 모두 녹기 한 시간 전에 남아있는 치즈조각이 놓여 있는 칸의 개수 final_count = -1 # 시간 time = 0 # 상 하 좌 우로 움직여야함 move = [(0, 1), (0, -1), (1, 0), (-1, 0)] while True: # 매 초마다 녹아가는 치즈의 수를 구함 count_cheeze = 0 # 방문처리 visi..
백준 / 내리막 길 / 1520번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 내리막 길 / 1520번 (골드 3단계)문제 사이트: https://www.acmicpc.net/problem/1520 문제 설명 나의 풀이1번은 시작점을 기준 아래쪽으로 쭉 내려가다 높이 15의 배열을 밟고 제일 오른 쪽 아래 지점으로 이동하게 됩니다.2번의 경우의 수에서는 45-37-32로 가다가 2-1과 2-2로 나뉘게 됩니다.2-1번에선 32-20-17-15를 밟게 되는데 이때 1번에서 높이 15를 밟게되면 들어갈 수 있다는 기록이 있으므로 들어가지 않더라도 카운트 합니다.2-2번에서도 32-30-25-20를 밟게 되는데 2-1에서 높이 20을 밟으면 높이 15로 이어지고 높이 15는 제일 오른 쪽 아래 지점으로 이동할 수 있습니다.이렇게 중복되는 길을..
파이썬 입력 최적화(import sys, input())
·
소프트웨어 개발/코딩 팁
파이썬에서 입력을 받는 방법들1. input() 함수input()은 파이썬에서 가장 기본적인 입력 함수입니다. 한 줄의 입력을 받아 문자열로 반환합니다. 작은 입력을 처리할 때는 매우 직관적이고 사용하기 쉽지만, 대규모 입력에서는 속도가 상대적으로 느릴 수 있습니다. 예시 코드n = int(input())for _ in range(n): data = input().strip() print(data)특징:한 줄씩 입력을 받아 처리합니다.사용하기 직관적이며, 간단한 문제에서는 매우 적합합니다.하지만 대규모 데이터를 다루는 경우 속도가 느릴 수 있습니다. 이 함수는 내부적으로 많은 I/O 처리를 하기 때문입니다.시간 복잡도:입력을 받을 때마다 I/O 작업이 발생하므로, N번의 input() 호출이 ..
백준 / 연결 요소의 개수 / 11724번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 연결 요소의 개수 / 11724번 (실버 2단계)문제 사이트: https://www.acmicpc.net/problem/11724 문제 설명 나의 풀이from collections import dequeimport sysdef bfs(graph, start): q = deque([start]) visited[start] = True power = False while q: x = q.popleft() for next in graph[x]: if not visited[next]: power = True visited[next] = True ..
백준 / N과 M (9) / 15663번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: N과 M (9) / 15663번 (실버 2단계)문제 사이트: https://www.acmicpc.net/problem/1225 문제 설명 나의 풀이n, m = map(int, input().split())line = list(map(int, input().split()))line.sort()result = []used = [False] * n # 각 숫자가 사용되었는지를 추적하기 위한 리스트def dfs(): if len(result) == m: print(' '.join(map(str, result))) return prev = -1 # 이전에 사용한 숫자를 저장 for i in range(n): if..
Programmers / 마법의 엘리베이터 / Python
·
코딩테스트(프로그래머스 & 백준)/프로그래머스-Python
*문제 출처는 프로그래머스에 있습니다.  문제 제목: 마법의 엘리베이터 (3단계)문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/148653?language=python3 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문제 설명 나의 풀이def solution(storey): answer = 0 while storey > 0: remainder = storey % 10 # 현재 자리수 if remainder > 5: answer +..
[Unity] 3D - 360도 HDRI 배경 적용하기
·
소프트웨어 개발/Unity
이번에는 VR기기를 위해서 360배경을 적용하는 과정을 알아보도록 하겠습니다! 우선 360 배경이 될만한 소스를 먼저 구해야 할텐데요. HDRI 라는 단어로 구글링해보면 검색이 되는데요.아래 URL에서 HDRI Haven 이라는 사이트를 만나 보실 수 있습니다.https://hdrihaven.com/hdris/ HDRIs • Poly HavenPreviously known as HDRI Haven. Hundreds of free HDRI environments, ready to use for any purpose. No login required.polyhaven.com 여기서 원하는 사진을 찾아서 다운 받으시면 됩니다.다운 받은 파일을 잘 보관하시고 유니티를 켜보겠습니다.모든 배경을 삭제하면 이런 아무..
백준 / RGB거리 / 1149번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: RGB거리 / 1149번 (실버 1단계)문제 사이트: https://www.acmicpc.net/problem/1225 문제 설명 나의 풀이def solution(h: list): for i in range(len(h) - 2, -1, -1): for j in range(3): if j == 0: h[i][j] = min(h[i][j] + h[i + 1][1], h[i][j] + h[i + 1][2]) elif j == 1: h[i][j] = min(h[i][j] + h[i + 1][0], h[i][j] + h[i + 1][2]) ..
백준 / N과 M (5) / 15654번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: N과 M (5) / 15654번 (실버 3단계)문제 사이트: https://www.acmicpc.net/problem/15654 문제 설명 나의 풀이# N은 숫자가 나올 수 있는 최대, M은 수열의 길이N, M = map(int, input().split())line = list(map(int, input().split()))line.sort() # 숫자들을 정렬합니다.answer = []used = [False] * N # 각 숫자가 사용되었는지를 추적하기 위한 리스트def dfs(): if len(answer) == M: # 수열의 길이가 M에 도달하면 출력 print(' '.join(map(str, answer))) r..
[운영체제] CPU(중앙처리장치)의 여러 구성 요소
·
컴퓨터 과학/운영체제
이번에는 CPU의 여러 구성요소에 대해 설명하도록 하겠습니다.CPU는 크게 PC, ALU, AC, MAR, 제어 유니트, IR, MBR의 요소를 가지고 있습니다. 1. PC (Program Counter) - 프로그램 카운터역할: 현재 실행 중인 명령어의 주소를 가리키는 레지스터입니다.다음에 실행될 명령어의 메모리 주소를 저장합니다.명령어를 읽을 때마다 증가하며, 프로그램 흐름을 제어합니다. 2. ALU (Arithmetic Logic Unit) - 산술 논리 장치역할: 산술 연산(덧셈, 뺄셈 등)과 논리 연산(AND, OR, XOR 등)을 수행하는 장치입니다.CPU의 연산 능력을 담당하며, 데이터를 처리하는 가장 핵심적인 장치입니다. 3. AC (Accumulator) - 누산기역할: ALU에서 연산된..
김치바보
'분류 전체보기' 카테고리의 글 목록 (7 Page)