728x90
반응형
SMALL

전체 글 230

[Python] 전화번호 목록

✏️ 문제 문제 파악처음에는 in 으로 풀면 되지 않나 싶어서 했는데 역시나.. 시간 초과로 통과가 되지 않았다.찾아보니 딕셔너리와 리스트(배열)의 in 연산 시간복잡도는 다음과 같았다.자료구조딕셔너리리스트(배열)시간복잡도O(1) (평균), O(n) (최악)O(n) 그래서 딕셔너리를 생성해 이를 in 처리해서 풀었다.  코드시간 초과 코드def solution(phone_book): for i in range(len(phone_book)-1): for j in range(i+1, len(phone_book)): if (phone_book[i] == phone_book[j][:len(phone_book[i])]) or (phone_book[j] in phone_book..

[Python] 코딩테스트 풀 때 유용한 파이썬 함수 (1)

코딩테스트 풀 때 유용한 파이썬 함수 Counter, join, zip, lambda 4가지에 대해서 알아보겠습니다.  1. Counter()collections 모듈에 포함된 데이터 카운팅을 위한 클래스이므로 사용할 때 import 해주어야 한다.주어진 데이터에서 요소들의 개수를 빠르게 세어주며 결과를 딕셔너리 형태로 반환한다.주로 문자열, 리스트, 튜플 등 반복 가능한(iterable) 객체에서 요소의 빈도를 계산할 때 사용한다. 1.1 사용법 입력: iterable 객체출력: 각 요소의 개수를 담은 딕셔너리 형태from collections import Counter# 1. 문자열counter1 = Counter("abcabc")print(counter1) # Counter({'a': 2, 'b'..

Python 2024.12.10

[Python] 피로도

✏️ 문제 문제 파악전체의 경우 수를 다 돌았을 때 최소 값을 구하므로 완전탐색을 풀 때 효율 좋은 백트래킹을 활용해 풀면 된다. max_cnt를 dfs 함수 내에 사용할 때 에러가 뜨는데 local 변수라 에러가 뜨는 것이므로 이를 global 함수로 변경해서 사용하면 된다.global 함수로 정의하기 위해선 dfs 함수 내외, 두 곳 다 정의해주어야 하는데이게 싫으면 dfs 함수 내에 nonlocal max_cnt라고 써주면 한줄로 에러를 해결할 수 있다.  코드def solution(k, dungeons): global max_cnt max_cnt = 0 visited = [False] * len(dungeons) def dfs(k, cnt): global ..

[Python] 프로세스

✏️ 문제 문제 파악priorities 배열 내의 값이 같아도 다 다른 프로세스이므로 값으로 구분하면 안되고 위치로 구분해야 한다. 그래서 딕셔너리를 사용해 { 인덱스 : 값 } 으로 주었고 location과 인덱스가 같으면 반복문을 그만 돌도록 코드를 짰다. 우선순위가 높은 프로세스부터 실행되기 때문에만약 딕셔너리의 값 중 최대값(max)인데딕셔너리의 인덱스 == location 이라면 프로세스 실행 변수 출력딕셔너리의 인덱스 != location 이라면 딕셔너리 값 = -1, 프로세스 실행 변수 +1로 하여 반복문을 돌리도록 하였다.  코드def solution(priorities, location): cnt = 1 dic = {} for i, p in enumerate(pri..

[Python] 의상

✏️ 문제 문제 파악각 의상들은 입는 방법이 2가지로 나뉜다.입는다.안입는다. 하지만 코니는 최소 한 개의 이상을 입으므로 전부 안입는 경우는 치지 않으므로 마지막 결과값에 -1을 해주어야 한다. 예시 1번을 보면 headgear1. 두 개 다 안쓴다.2. yellow_hat 쓰고 green_turban 안쓴다.3. green_turban 쓰고 yellow_hat 안쓴다.eyewear1. 안쓴다.2. blue_sunglasses 쓴다 경우의 수는 해당 의상의 종류 + 1(안쓴다) 인 것으로 알 수 있다.그리고 우리가 구하는 조합의 수는 3(headgear의 경우의 수) * 2(eyewear의 경우의 수) - 1(아무것도 안입는 경우) = 5 이다.이 계산식을 근거로 코드를 짜면 된다.  코드from co..

[Python] n^2 배열 자르기

✏️ 문제 문제 파악처음에는 이중 for 반복문 써서 풀었는데 역시나.. 시간초과로 통과가 되지 않았다.그럼 규칙을 찾아야 하는데 첫 번째 예시를 보면 다음과 같다.i \ j01200, 1 = 11, 2 = max(i, j) + 12, 3 = max(i, j) + 113, 2 = max(i, j) + 14, 2 = max(i, j) + 15, 3 = max(i, j) + 126, 3 = max(i, j) + 17, 3 = max(i, j) + 18, 3 = max(i, j) + 1 위의 표에서 파란색 숫자는 1차원 배열로 만들었을 때 left와 right의 기준이 되는 숫자를 말한다.전체적으로 봤을 때 해당 index의 값은 가로와 세로 index 중 max(index) + 1로 이뤄지는 것을 알 수 있..

[Next.js] Data Fetch 방법, 병렬 Fetch, Suspense 사용법, prefetch?

Next.js에서 Data Fetch 하는 방법에 대해 알아보겠습니다.  1. Data Fetch원래 Front랑 DB 사이를 연결하려면 API가 필수적으로 필요하며 API가 사이에서 데이터를 주고 받을 수 있게 도와줬는데 Next.js를 사용하면 API가 더이상 필요없다. client component에서 Data fetching 방법Hooks 사용기본 React만 쓸 때처럼 useEffect를 쓰면서 해야된다.fetch할 때마다 API에 요청한다.server component로부터 Data fetching 방법Hooks 미사용프레임워크가 다 해주기 때문에 useEffect를 쓰지 않아도 된다.첫 번째 fetch만 API에 요청한다.첫 번째 fetch할 때는 fetch되는 동안 페이지가 로딩되는데 이때..

[Next.js] "use client"를 왜 쓰는 걸까?

Next.js는 Hydration의 유무에 따라 client component와 server component로 나눠진다.그럼 Hydration이란 무엇일까? 1. Hydration정의사용자가 최초 html을 본 뒤에 어떤 일이 발생하는 지에 대한 과정을 말한다.달리 말해, 단순 html을 React Application으로 초기화하는 작업을 말한다.과정사용자가 페이지에 도착한 순간에는 아직 Javascript도 프레임워크도 로드되지 않은 더미 html을 보여준다. 이때 event listener 등은 작동하지 않는다.그 후 아주 빠르게 react application이 초기화된다.완료되면 react component가 되고 요소들이 interactive하게 된다.Hydration 과정을 거치면 even..

[운영체제] CPU 스케줄링에 대하여...더보기

CPU 스케줄링CPU 스케줄링이란 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것이다. 1. CPU 스케줄링이 필요한 이유 모든 프로세스는 CPU를 필요로 하고 모든 프로세스는 먼저 CPU를 사용하고 싶어 한다.프로세스 종류마다 입출력장치를 이용하는 시간과 CPU를 이용하는 시간의 양에는 차이가 있다. 1.1 시간에 따른 분류입출력 집중 프로세스: 비디오 재생이나 디스크 백업 작업을 담당하는 프로세스와 같이 입출력 작업이 많은 프로세스CPU 집중 프로세스: 복잡한 수학 연산, 컴파일, 그래픽 처리 작업을 담당하는 프로세스와 같이 CPU 작업이 많은 프로세스 1.2 우선순위프로세스의 중요도에 맞게 프로세스가 CPU를 이용할 수 있도록 하기 위해 운영체제는 프로세스마다 우선순위를 부여..

CS/운영체제 2024.11.30

[운영체제] 교착 상태 발생 조건과 해결 방법

교착 상태란?프로세스를 실행하기 위해서는 자원이 필요한데, 두 개 이상의 프로세스가 각자 상대방이 가지고 있는 자원을 무작정 기다린다면 그 어떤 프로세스도 더 이상 진행할 수 없는 교착 상태가 된다.교착 상태는 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상를 말한다. 1.  발생 조건아래 조건 중 하나라도 만족하지 않는다면 교착 상태가 발생하지 않지만, 아래 조건이 모두 만족될 때 교착 상태가 발생할 가능성이 생긴다.상호 배제: 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상황점유와 대기: 어떠한 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태비선점: 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 않고 그 자원을 이용하는 프로세스의 작업이 끝나야만 이용하는..

CS/운영체제 2024.11.29
728x90
반응형
LIST