분류 전체보기39 [프로그래머스] 과제 진행하기 (python) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/176962 1. 과제 별로 주어진 시작 시간에 무조건 과제를 시작한다. 2. 새로운 과제를 시작할 시각이 되었을 때, 진행중인 과제를 멈추고 새로운 과제를 시작한다. 3. 과제를 끝내고 다음 과제를 하기 전까지 시간이 남는다면 가장 최근에 멈춘 과제를 시작한다. 4. 과제를 끝낸 순서대로 과제의 이름을 배열에 반환하는 문제. 풀이 이전 과제의 끝 시간과 새로운 과제의 시작 시간을 비교했다. 두 과제의 시간이 겹친다면 큐에 진행중인 과제의 이름과 남은 시간을 넣어주고, 두 과제 간 시간이 겹치지 않는다면 answer에 끝낸 과제의 이름을 넣어주었다. 두 과제 간 빈 시간이 있다면 가장 최근에 멈춘.. 2024. 4. 12. [프로그래머스] 줄 서는 방법 (python) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12936# n명의 사람들을 나열하는 방법을 사전 순으로 나열했을 때, k번째 방법을 반환하는 문제이다. 풀이 tmp 아직 사용하지 않은 숫자를 오름차순으로 tmp 배열에 담았다. tmp의 인덱스 구하기 k번째 배열에서 i번째에 올 숫자를 구한다고 했을 때(1 ≤ i ≤ n), k를 남아있는 자릿수의 팩토리얼, 즉 (n-i)!으로 나누어 주었을 때의 몫이 사용하지 않은 숫자를 담은 tmp에서의 인덱스를 나타낸다. [[1 2 3], [1 3 2], [2 1 3], [2 3 1], [3 1 2], [3 2 1]] 여기서 k가 1과 2일 때 첫번재 자리수를 구해보면 다음과 같은 결과가 나온다. 1일.. 2024. 4. 12. [React] React Hook Form의 useForm 사용기 React hook form은 리액트에서 폼의 유효성 검사를 위한 라이브러리이다. useForm을 가지고 간단한 폼을 만들어봤다. import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; export default function ReactHookForm() { const [name, setName] = useState(""); const { watch, register, formState: { errors, isSubmitSuccessful }, handleSubmit, setValue, reset, } = useForm({ mode: "onBlur" }); const handleChange = (e) .. 2024. 4. 11. [프로그래머스] 다리를 지나는 트럭 (python) 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/42583 1. 트럭 여러 대가 일차선 다리를 지난다. 2. 다리 위에 bridge_length만큼의 트럭만 올라갈 수 있으며, 다리 위의 트럭의 총 무게 합이 weigth를 넘으면 안된다. 3. 하나의 트럭이 다리를 건너는데에는 bridge_length초가 걸린다. 4. 이때, 모든 트럭이 다리를 건너는데에 걸리는 최소 시간을 구하는 문제이다. 접근 먼저 큐에 bridge_length만큼 0을 넣어주고, 다리 위의 트럭 수와 트럭의 총 무게합을 고려했을 때 조건에 부합한다면 트럭을 다리 위에 올리고 그렇지 않다면 0을 넣어주어 마지막 트럭이 다리를 건넜을 때까지의 시간을 반환해주려 했다... 2024. 4. 7. [운영체제] 프로세스와 스레드 프로세스 운영체제로부터 자원을 할당받은 작업의 단위 생명주기 1. 운영체제가 프로그램을 실행시키기 위해 메모리에 공간을 할당한다. 2. 프로그램이 메모리 위에 올라가면 인스턴스화가 일어나 프로세스가 된다. 3. CPU 스케줄러에 따라 CPU 자원이 할당되고 PCB가 생성된다. 4. 실행이 끝나면 할당된 CPU와 메모리를 반환하고 PCB가 삭제된다. PCB 프로세스 아이디, 이름, 상태, 포인터, io 리스트, 메모리 정보를 담고 있다. 스케줄링 알고리즘 비선점형: 프로세스가 스스로 CPU 할당을 포기하는 것 1. FCFS: 실행시간이 긴 프로세스가 있다면 다른 프로세스의 대기 시간이 길어지는 단점 발생(convoy effect) 2. SJF: 실행시간이 긴 프로세스는 실행되지 않는다는 단점 발생(star.. 2024. 4. 6. [운영체제] 메모리 구조 사용자가 프로그램 실행을 요청하면, 운영체제는 프로그램의 정보를 메모리에 로드합니다. 운영체제는 코드, 데이터, 스택, 힙 영역을 관리하며, 필요에 따라 메모리를 할당하고 해제합니다. 코드 영역 프로그램의 소스 코드가 기계어로 저장되는 공간 CPU가 프로세스를 실행시킬 때 코드 영역의 명령어를 하나씩 실행시킨다. 제어문, 함수, 상수가 포함된다. 함수가 호출되면 내부에 있는 지역변수는 스택영역에 push된다. 데이터 영역 전역변수와 정적변수가 저장되는 공간 낮은 주소에서 부터.. 정적 변수, 초기화된 변수, 초기화되지 않은 변수가 저장된다. BSS 영역.? 힙 영역 동적으로 할당된 변수들이 저장된다. 사용자에 의해 관리되기 때문에 사용 후 따로 해제를 시켜줘야한다. 런타임에 할당될 영역의 크기가 결정된다.. 2024. 4. 6. [프로그래머스] 의상 (python) 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/42578 1. 옷의 종류와 이름이 주어졌을 때, 각 종류별로 최대 1가지 의상만 선택할 수 있다. 2. 이때 서로 다른 옷의 조합의 수를 구하는 문제다. 풀이 딕셔너리에 종류에 따른 옷의 개수를 저장해주었다. 각 종류에서 하나를 선택하거나 아무것도 선택하지 않는 경우가 있으므로, 경우의 수를 (옷의 개수 + 1)로 설정했다. answer에 모든 경우의 수를 곱해준 뒤, 마지막으로 아무것도 선택하지 않는 경우를 빼주었다. 코드 def solution(clothes): answer = 1 dic = {} for name,category in clothes: if category not in d.. 2024. 4. 6. [프로그래머스] 호텔 대실 문제 설명 1. 사용한 객실은 10분 청소후 다음 손님이 사용할 수 있다. 2. book_time 배열에 각 예약별 대실 시작 시각과 대실 종료 시간이 주어진다. 3. 이때 사용하는 최소 객실 수를 구하는 문제이다. 풀이 모든 시간을 분으로 변경해주고 시간 순으로 정렬을 했다. time 배열에 시간 순으로 오는 손님들의 (대실 종료 시간 + 10)을 저장했다. 새로운 예약 손님의 대실 시작 시간이 time 배열의 최소값보다 크다면 해당 객실은 사용 가능하므로 새로운 예약의 대실 종료 시간으로 대체했다. 새로운 예약 손님의 대실 시작 시간이 time 배열의 최소값보다 작다면 새로운 객실을 주어야 하므로 time에 대실 종료 시간을 넣어주었다. 코드 def solution(book_time): # 모든 시간.. 2024. 4. 4. [프로그래머스] 하노이의탑 (python) 미완 문제 설명 위 조건을 만족하는 하노이의 탑을 쌓을 때 원판을 옮기는 최소 방법을 구하는 문제 접근 먼저 직접 하노이의 탑을 쌓아보니 가장 처음 1번 원판을 옮길 때, n이 홀수라면 3번 기둥 짝수라면 2번 기둥에 쌓아야 최소 횟수로 하노이의 탑을 옮길 수 있다. 그리고 조건문을 통해 옮기려는 원판보다 작은 원판이 있거나, 같은 홀수 또는 짝수일 때는 옮기지 못하도록 설정해주었다. 3번 기둥을 조건문의 가장 앞쪽에 두어 3번이 가장 우선순위가 되도록 설정했다. 시간 부족으로 코드를 완성하지 못했다.. 코드 def solution(n): answer = [] hanoi = [[], [i for i in range(n, 0, -1)], [], []] # 1번 원판 옮기기 if n % 2 == 0: answer.. 2024. 3. 29. [프로그래머스] 멀짱한 사각형 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/62048# 위 그림과 같이 1 x 1 크기의 격자칸으로 이루어진 직사각형의 높이와 너비가 주어졌을 때, 대각선을 포함하지 않는 격자칸의 수를 세는 문제이다. 높이와 너비는 1억 이하의 자연수이다. 풀이 대각선을 일차원 함수로 생각하면 (x,x+1) 구간에서 f(x)값을 포함하는 칸부터 y=f(x+1)값을 포함하는 칸까지가 대각선이 지나가는 격자칸의 수가 된다. 따라서 f(x+1)의 올림값에서 f(x)의 내림값을 빼면 격자칸의 개수를 구할 수 있다. f(x)값이 정수라면 x값을 기준으로 대각선이 격자칸을 지나는 패턴이 반복이 되므로 가로 길이를 x로 나눠주어 이전까지 구한 격자칸들(ans).. 2024. 3. 29. 이전 1 2 3 4 다음