[PGS - LV3] 스티커 모으기(2)
·
알고리즘
문제N개의 스티커가 원형으로 연결되어 있습니다. 다음 그림은 N = 8인 경우의 예시입니다.원형으로 연결된 스티커에서 몇 장의 스티커를 뜯어내어 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록 하고 싶습니다. 단 스티커 한 장을 뜯어내면 양쪽으로 인접해있는 스티커는 찢어져서 사용할 수 없게 됩니다.예를 들어 위 그림에서 14가 적힌 스티커를 뜯으면 인접해있는 10, 6이 적힌 스티커는 사용할 수 없습니다. 스티커에 적힌 숫자가 배열 형태로 주어질 때, 스티커를 뜯어내어 얻을 수 있는 숫자의 합의 최댓값을 return 하는 solution 함수를 완성해 주세요. 원형의 스티커 모양을 위해 배열의 첫 번째 원소와 마지막 원소가 서로 연결되어 있다고 간주합니다. 제한 사항sticker는 원형으로 연결된 스티커..
[PGS - LV3] 숫자 게임
·
알고리즘
문제xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다.먼저 모든 사원이 무작위로 자연수를 하나씩 부여받습니다.각 사원은 딱 한 번씩 경기를 합니다.각 경기당 A팀에서 한 사원이, B팀에서 한 사원이 나와 서로의 수를 공개합니다. 그때 숫자가 큰 쪽이 승리하게 되고, 승리한 사원이 속한 팀은 승점을 1점 얻게 됩니다.만약 숫자가 같다면 누구도 승점을 얻지 않습니다.전체 사원들은 우선 무작위로 자연수를 하나씩 부여받았습니다. 그다음 A팀은 빠르게 출전순서를 정했고 자신들의 출전 순서를 B팀에게 공개해버렸습니다. B팀은 그것을 보고 자신들의 최종 승점을 가장 높이는 방법으로 팀원들의 출전 순..
[PGS - LV3] 야근 지수
·
알고리즘
문제회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겁니다.Demi가 1시간 동안 작업량 1만큼을 처리할 수 있다고 할 때, 퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 야근 피로도를 최소화한 값을 리턴하는 함수 solution을 완성해주세요.제한 사항works는 길이 1 이상 20,000 이하인 배열입니다.works의 원소는 50,000 이하인 자연수입니다.n은 1,000,000 이하인 자연수입니다.worksnresult[4, 3, 3]412[2, 1, 2]16[1,1]30문제 풀이야근 지수는 남은 작업량의 제곱의 ..
[OS] 메모리 단편화
·
CS
메모리 단편화란?시스템이 메모리를 할당하고 해제하는 과정이 반복되면서, 메모리 공간이 작은 조각으로 쪼개져 총량은 충분하지만 실제로 활용하기 어려워 지는 현상을 말한다.단편화는 내부 단편화와 외부 단편화로 나뉜다. 내부 단편화 VS 외부 단편화내부 단편화 : 고정 크기 할당 시, 내부 공간이 남아서 낭비됨.외부 단편화 : 가변 크기 할당 시, 빈 공간의 총량은 충분하나 쪼개져 있어서 할당 불가능. 1. 내부 단편화프로그램이 필요한 양보다 더 큰 메모리가 할당되어 내부에서 남는 공간이 발생하는 현상발생 이유메모리를 쪼갤 때 제각각 나누면 관리가 복잡해지기 때문에 OS는 관리 효율을 위해 메모리를 일정한 크기(ex. 4KB, 8KB)의 덩어리로 고정하여 할당하기 때문에 발생한다. 예시64KB 단위로 쪼개서..
[네트워크] IPv4와 IPv6의 헤더 구조 및 터널링 방법
·
CS
IPv4 구조 ver : IP 버전 번호 ex) IPv4, IPv6head. len : 헤더의 길이, option에 따라 가변적type of service : 패킷 간의 서비스 방법→ buffer managementex) ‘우선 순위’일 경우 : 낮은 우선순위를 쫓아내고 자신이 들어간다.length : IP datagram의 전체 길이16-bit identifier, flgs, fragment offset : IP 단편화(fragmentation)와 관련16-bit identifier : 자른 fragment들이 패킷임을 알려주기 위해 ID값 사용fragment offset : 잘린 fragment의 순서를 나타냄→ 메세지를 보내고 혼잡을 피하기 위해 자른다.time to live(TTL) : 최대 h..
[OS] 페이지 교체 정책
·
CS
페이지 교체 정책이란?운영체제에서 가상 메모리를 관리할 때, 물리 메모리(RAM)의 공간이 부족해지면 새로운 페이지를 가져오기 위해 기존에 있던 페이지를 몰아내야 합니다. 어떤 페이지를 몰아낼지 결정하는 알고리즘을 바로 페이지 교체 정책이라고 합니다.각 정책은 페이지의 참조 기록을 기반으로 미래의 페이지 참조를 예측하여 페이지 교체 횟수를 최소화하는 것을 목표로 합니다. 페이지 교체 과정페이지 폴트 발생: 프로세스가 실행 중에 참조하려는 페이지가 메모리에 없는 경우 페이지 폴트가 발생합니다.교체 대상 선정: 페이지 교체 정책에 따라 교체 대상 페이지를 선정합니다.페이지 교체: 선정된 페이지를 디스크로 내보내고(swapping out), 필요한 페이지를 디스크에서 가져와(swapping in) 메모리에 적..
[코드트리 - L15] 23년 상반기 오전 1번 포탑 부수기
·
알고리즘
코딩테스트 기출 문제 설명: 포탑 부수기 | 코드트리코딩테스트 기출 문제 포탑 부수기의 상세 설명입니다. 문제 요구사항을 정확히 파악하고 효율적인 알고리즘을 설계해보세요.www.codetree.ai 소요 시간 : 4시간!! 문제 풀이1. 공격자 선정2. 타겟 설정해서 레이저 공격 및 포탄 공격3-1. 레이저 공격3-2. 포탄 공격4. 포탑 부서짐 및 정비 크게 위와 같이 나눌 수 있다. 1. 공격자 선정0 이 아닌 값들 중 가장 약한 포탑을 공격자로 선정2개 이상이면, 가장 최근 공격 포탑최근 공격 포탑도 2개 이상이면, (행 + 열) 값이 가장 큰 포탑(행 + 열) 값도 같은게 2개 이상이면, 열이 가장 큰 포탑선정 후 공격력 (N + M)만큼 추가한다.가장 최근 공격 포탑은 lastAttackTim..
[코드트리 - L13] 25년 상반기 오후 1번 미생물 연구
·
알고리즘
코딩테스트 기출 문제 제출: 미생물 연구 | 코드트리코딩테스트 기출 문제 미생물 연구의 풀이를 제출하고 즉시 채점 결과를 확인하세요. 실시간 피드백으로 코딩 실력을 향상시킵니다.www.codetree.ai 문제풀이1. 미생물 투입이미 해당 위치에 다른 미생물이 있다면 새로 투입된 미생물만 남는다.기존에 있던 미생물 A가 새로 투입된 B에 먹혀, 2 이상의 그룹으로 나뉜다면 A는 모두 사라진다.2. 배양용기 이동가장 넓은 영역을 가진 미생물 선택한다. 둘 이상이면, 먼저 투입된 미생물을 선택한다.기존 형태를 유지한 채로 다른 미생물이랑 겹치지 않게 (최대한 작은 x , 최대한 작은 y)로 이동한다.어디도 둘 수 없다면 사라진다.3. 실험 결과모든 인접한 무리쌍을 확인한다. 이 때, 두 무리 A와 B가 맞..
[코드트리 - L12] 25년 상반기 오전 1번 민트초코우유
·
알고리즘
코딩테스트 기출 문제 설명: 민트 초코 우유 | 코드트리코딩테스트 기출 문제 민트 초코 우유의 상세 설명입니다. 문제 요구사항을 정확히 파악하고 효율적인 알고리즘을 설계해보세요.www.codetree.ai 문제 풀이조건을 잘 봐야 한다. 풀이하다가 조건을 잊어서 히든 테케에서 발견하기 ㅠ 그래도 하반기 문제들보다는 정렬만 잘하면 괜찮다고 느껴졌던 문제 빠트렸던 조건들저녁시간에서 전파할 때, 그룹 순서와 같은 그룹 내 순서를 잊지 말 것!전파 전, 같은 신봉음식일 경우를 확인하여 넘기기(강한 전파 구문 안에 넣어서 틀렸었다!)비트 마스킹을 쓰면, T, C, M 확인 방법이 더 간단할 것 같은데 우선순위를 지정해주는 방식으로 구분하였다. 전체 코드더보기import java.io.BufferedReader;..