728x90 전체 글279 [PG/Python] 불량 사용자 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/64064 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr 📌 문제 접근 방법 banned_id를 하나씩 순회하며 banned_id가 될 수 있는 후보 리스트를 able_banned에 저장했다. 후보 리스트를 하나씩 순회하며 재귀를 이용해서 불량 사용자 리스트를 만들었다. 중복을 체크해주기 위해서 sort한 후 answer에 저장했다. 불량 사용자 리스트의 경우의 수가 저장된 answer의 길이를 반환한다. 📌.. 2021. 12. 8. [SWEA/Python] 2383. 미생물 격리 📌 문제 https://swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 📌 문제 접근 방법 주어진 정보를 어떤 형식으로 저장하는 게 가장 쓰기 편할까? 이 고민을 제일 많이 했다. 결국은 딕셔너리를 사용해서 좌표를 key로 미생물의 개수와 방향을 value로 저장했다. 그 다음 딕셔너리를 순회하며 temp라는 딕셔너리에 key값은 이동 후 좌표, value는 이동 전 좌표를 저장했다. 다시 temp를 순회하며 value 리스트의 길이가 2 이상일 경우 한 지점에 여러 미생물이 모이는 것이므로, 미생물의 수가 가장 큰 군집을 찾아서 방향을 설정해주고 모든.. 2021. 12. 7. [SWEA/Python] 5658. 보물상자 비밀번호 📌 문제 https://swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 📌 문제 접근 방법 N을 4로 나눠서 cnt에 저장하고 그만큼 회전을 시켜서 숫자를 생성하였다. 생성한 숫자는 four_num함수를 사용하여 4개로 잘라서 total에 저장하였다. total에서 중복을 제거한 후 내림차순으로 정렬하여 K번째에 있는 수를 10진수로 변환하였다. 📌 코드 # SWEA 5658 보물상자 비밀번호 from collections import deque def four_num(num): global total i = 0 for _ in range(4): tem.. 2021. 12. 7. [SWEA/Python] 2383. 점심 식사시간 📌 문제 https://swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 📌 문제 접근 방법 처음엔 dp로 풀어야하나 싶어서 아이디어를 짜는 데, 도저히 떠오르지 않았다. 결국 아이디어를 얻으려고 구글링을 해보니 완전탐색이 가능하다길래 완전탐색으로 풀기로 결정! 입력받은 2차원 배열에서 사람의 위치와 계단의 위치를 찾아서 각각 people과 stairs에 저장해줬다. people은 조합을 이용해서 두 그룹으로 나누었고 첫 번째 그룹과 첫 번째 계단, 두 번째 그룹과 두 번쨰 계단을 각각 go_for_lunch 함수에 넣고 실행해서 둘 중 더 큰 시간을 해.. 2021. 12. 7. [OS] 임계구역, 임계구역 해결 공유 자원 shared resource 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등 공동으로 이용되기 때문에 프로세스들의 접근 순서를 정하여 예상치 못한 문제가 발생하지 않도록 해야함 경쟁 조건 (race condition) : 2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황 임계구역 critical section 공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역 임계구역에서는 프로세스들이 동시에 작업하면 안 됨 - 생산자-소비자 문제 (producer-consumer problem) 생산자는 계속 물건을 생산해 버퍼에 넣고 : input(buf) 소비자는 계속 버퍼에서 물건을 가져온다 : output(buf) 버퍼는 작업을 계속하기 위해 원형 버퍼(circ.. 2021. 12. 6. [OS] 프로세스 간 통신 프로세스 간 통신 : 프로세스는 시스템 내에서 독립적으로 실행되기도 하고 데이터를 주고받으며 협업하기도 함 프로세스 내부 데이터 통신 : 하나의 프로세스에 2개 이상의 스레드가 존재하는 경우의 통신, 전역변수, 파일 이용 프로세스 간 데이터 통신 : 같은 컴퓨터에 있는 여러 프로세스끼리 통신, 공용파일, 파이프 이용 네트워크를 이용한 데이터 통신 (= 네트워킹) : 여러 컴퓨터가 네트워크로 연결된 경우, 소켓 이용 - 프로세스 간 통신 분류 분류 방식 종류 설명 예 통신 방향 양방향 통신 데이터를 동시에 양방향으로 전송할 수 있는 구조 소켓 반양방향 통신 데이터를 양방향으로 전송할 수 있지만 동시 전송은 불가 무전기 단방향 통신 데이터를 한쪽 방향으로만 전송할 수 있는 구조 전역 변수, 파일, 파이프 통.. 2021. 12. 5. [BOJ/Python] 14888. 연산자 끼워넣기 📌 문제 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 📌 문제 접근 방법 연산자를 입력된 개수만큼 리스트에 넣은 후 순열을 만들어줬다. 똑같은 연산자가 2번 이상 들어갈 경우, 중복될 수 있으므로 set을 사용해서 중복을 제거해줬다. 숫자와 연산자를 순회하면서 앞에서부터 계산한 값을 results에 append 해줬다. results에서 최대값과 최소값을 출력했다. 📌 코드 from i.. 2021. 12. 2. [PG/Python] 큰 수 만들기 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 📌 문제 접근 방법 처음엔 숫자의 길이에서 k만큼을 빼서 필요한 만큼 숫자를 뽑아내는 방식으로 코드를 짰다. 8, 10번에서 시간초과가 나서 슬라이싱을 deque의 popleft로 바꿔봤는데도 시간초과가 났다. 결국 해결하지 못하고 구글링...😅 스택을 활용한 방법으로 바꿨다! 스택에 숫자를 하나씩 넣고 만약 push하려는 숫자가 스택의 마지막 숫자보다 작다면 스택의 마지막 숫자가 크거나 같아질 때까지 pop을 한다. 반복문이 끝나고 원하는 길이만큼 스택을 슬라이싱해서 answer에 저장한다. 📌 코드 from collection.. 2021. 12. 2. [OS]CPU 스케줄링 알고리즘 스케줄링 알고리즘 종류 비선점형 알고리즘 : FCFS 스케줄링, SJF 스케줄링, HRN 스케줄링 선점형 알고리즘 : 라운드 로빈 스케줄링, SRT 스케줄링, 다단계 큐 스케줄링, 다단계 피드백 큐 스케줄링 둘 다 가능 : 우선순위 스케줄링 스케줄링 알고리즘 평가 기준 CPU 사용률 : 전체 시스템 동작 시간 중 CPU가 사용된 시간을 측정하는 방법 처리량 : 단위 시간당 작업을 마친 프로세스의 수, 클수록 좋음 대기 시간 : 작업을 요청한 프로세스가 작업을 시작하기 전까지 대기하는 시간, 짧을 수록 좋음 응답 시간 : 프로세스 시작 후 첫 번째 출력/반응이 나올 때까지 걸리는 시간, 짧을 수록 좋음 반환 시간 : 프로세스가 생성된 후 종료되어 사용하던 자원을 모두 반환하는 데 걸리는 시간, 대기 시간 .. 2021. 12. 2. [OS] CPU 스케줄링 CPU 스케줄링 CPU 스케줄러 : 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정하는 일을 함 스케줄링 : 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는 일 스케줄링의 단계 - 고수준 스케줄링 고수준(high level), 장기(long-term), 작업(job), 승인(admission) 스케줄링 가장 큰 틀에서 이루어지는 CPU 스케줄링 전체 작업의 수를 조절 (작업 : 일의 가장 큰 단위, 1개 또는 여러 개의 프로세스로 이루어짐) 시스템 내에서 동시에 실행 가능한 프로세스의 총 개수 결정 - 저수준 스케줄링 저수준(low level), 단기(short-term) 스케줄링 가장 작은 단위의 스케줄링 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대.. 2021. 12. 2. 이전 1 ··· 3 4 5 6 7 8 9 ··· 28 다음 728x90