[BOJ][Java] 18808. 스티커 붙이기
·
💭 Problem Solving/Java
문제 이해n×m 노트북(paper)에 k개의 스티커를 차례대로 붙인다. (우선순위: 왼쪽 위)이미 붙인 칸과 겹치면 안 되며, 한 번 붙이면 고정.모든 위치에 붙일 수 없으면 스티커를 0°, 90°, 180°, 270° 회전하여 시도.최종적으로 스티커가 붙은 칸의 총 개수를 출력. 풀이 흐름1. 탐색현재 스티커를 붙일 수 있는 위치를 왼쪽 위부터 탐색한다.(0,0)부터 (n-r, m-c)까지 붙일 수 있는 위치를 순서대로 확인한다.2. 스티커 붙이기스티커와 종이의 충돌을 검사한다. (둘다 1인 경우)해당 위치에 스티커의 1인 칸과 종이의 1인 칸이 한 번이라도 겹치면 실패 (return false)전부 안 겹치면 종이에 스티커를 붙인다. (붙이는 위치의 paper 값 = 1)3. 회전위에서 스티커를 못 ..
[데이터베이스] 접근 통제 기술 (AC, Access Control)
·
💻 CS/정보처리기사
임의 접근 통제 (DAC, Discretionary AC)사용자의 신원/신분에 따라 접근 권한 부여데이터 소유자가 접근 통제 권한 지정/제어객체 생성자가 모든 권한 갖고, 다른 사용자에게 허가SQL 명령어 : GRANT / REVOKE 강제 접근 통제 (MAC, Mandatory AC)주체와 객체의 등급을 비교 후 시스템이 접근 권한 부여DB 객체별 보안등급 설정 및 사용자별로 인가 등급 부여자신보다 낮은 등급의 객체에 읽기/실행/등록을 할당 가능자신보다 높은 등급의 객체에는 모두 가능, 자신보다 낮은 객체에는 읽기 가능 역할 기반 접근 통제 (RBAC, Role-based AC) 사용자의 역할에 따라 접근 권한 부여 (중앙관리자가 지정)다중 프로그램에 최적화
[BOJ][Java] 11437. LCA
·
💭 Problem Solving/Java
문제https://www.acmicpc.net/problem/11437 문제 풀이DFS로 parent/depth 저장 → 깊이 맞추기 → 함께 올라가면서 같아지는 지점 반환 트리 DFS로 각 노드의 부모, 깊이 저장하기루트부터 자식으로 내려가면서 parent, depth 배열에 저장루트(1)는 부모를 자기 자신(1)으로, 깊이는 0으로 (dfs(1, 1, 0)) LCA 구하기깊이 맞추기더 깊은 쪽을 부모로 올려서 depth[a] == depth[b]로 만듦.공통 조상 찾기a == b가 될 때까지 둘 다 parent로 올라감.같아지면 그 노드가 LCA. 유의할 점 (예외)a, b가 같은 노드이거나, 한쪽이 다른 쪽의 조상일 수 있다.이때 LCA는 그 노드 자신이어야 한다. 잘못된 코드while (pare..
[네트워크] 라우팅 프로토콜
·
💻 CS/정보처리기사
라우팅 프로토콜(Routing Protocol)컴퓨터 네트워크에서 데이터를 목적지까지 효율적으로 전달하기 위한 규칙을 의미라우터는 이러한 프로토콜을 기반으로 최적의 경로를 계산하고 선택하여 패킷을 전달정적 라우팅 프로토콜 (Static Routing Protocol)네트워크 관리자가 수동으로 경로를 설정하는 방식네트워크 구성이나 트래픽 패턴이 변경될 경우, 관리자가 직접 경로를 업데이트해야 함.특징소규모의 단순한 네트워크 환경에 적합함특정 경로를 반드시 거쳐야 하는 경우에 사용자동 갱신이 없으므로 자원 소모가 적음하지만 유연성이 떨어지고, 변경 시 수동 수정 필요 동적 라우팅 프로토콜 (Dynamic Routing Protocol)라우터 간 경로 정보를 자동으로 교환하여 최적의 경로를 결정하는 방식네트워..
[운영체제] 프로세스 스케줄
·
💻 CS/정보처리기사
스케줄링(Scheduling)여러 프로세스의 처리 순서를 결정하는 기법 1️⃣ 선점형 (Preemptive)운영체제가 실행 중인 프로세서로부터 CPU를 강제로 빼앗음→ 프로세서 별 CPU 처리 시간 단위(시분할)로 효율적인 운영 가능, 하지만 높은 오버헤드* 발생 Round Robin우선순위 없이 시간 단위로 CPU 할당 (공평한 자원 분배)SRT(Shortest Remaining Time)SJF 기반으로, 남은 실행 시간이 가장 짧은 프로세스에 CPU 할당다단계 큐(Multilevel Queue)작업들을 여러 개의 큐로 분류하고 각 큐마다 다른 스케줄링 기법 사용다단계 피드백 큐(Multilevel Feedback Queue)프로세스의 우선 순위를 동적으로 조정우선순위가 낮은 큐에서 오래 기다리면 상위..
[소프트웨어 구축] 모듈의 결합도(Coupling)와 응집도(Cohesion)
·
💻 CS/정보처리기사
응집도(Cohesion)개별 모듈이 독립적인 기능으로 정의되어 있는 정도응집도↑ → 품질↑ 기능적 (Functional)모듈 내부의 모든 기능 요소가 단일 목적에 연관되어 수행순차적 (Sequential)모듈 내 한 처리의 출력을 다음 활동의 입력 데이터로 사용통신적 (Communication)동일한 입력/출력 데이터를 사용하여 서로 다른 기능을 수행절차적 (Procedural)모듈 내 구성 요소들이 순차적으로 수행되지만 서로 다른 기능 수행시간적 (Temporal)특정 시점 내 처리되어야 하는 기능들을 모아 하나의 모듈로 구성논리적 (Logical)유사한 성격을 가진 기능을 하나의 모듈로 구성우연적 (Coincidental)각 구성 요소들이 서로 관련 없는 요소로만 구성 우연적 순서로 응집도가 높아진다..
[BOJ][Java] 21608. 상어 초등학교
·
💭 Problem Solving/Java
문제https://www.acmicpc.net/problem/21608 문제 이해N×N 교실의 빈 좌석에 학생들을 순서대로 앉힌다.각 학생은 좋아하는 4명의 친구가 있고, 좌석 배치는 아래 우선순위를 따른다:인접 4칸에 좋아하는 학생이 가장 많은 자리위 조건이 같다면 인접 빈칸이 많은 자리그래도 같다면 행 번호가 작은 자리그래도 같다면 열 번호가 작은 자리모든 학생을 배치한 후 만족도를 계산:인접 4칸의 좋아하는 학생 수에 따른 점수 = {0, 1, 10, 100, 1000} 구현 흐름입력학생 배치 순서 students[]preferences: 각 학생 → 좋아하는 학생 4명(Set)seats: 교실 좌석 상태 (N×N)배치findSeat(student)에서 모든 빈칸을 검사해 우선순위에 가장 맞는 좌석..
[소프트웨어 구축] GoF(Gang of Four) 디자인 패턴
·
💻 CS/정보처리기사
디자인 패턴GoF(Gang of Four) 처음 제안하여 구체화시스템에서 소프트웨어 구조를 설계하기 위한 참고 모델객체 지향 프로그램의 설계 시 자주 발생하는 문제에 대한 반복적 해결 방법※ 아키텍처 패턴 : 전체 시스템의 구조 설계 생성 패턴객체를 만드는 방법을 설계하는 패턴프로그램에서 객체를 어떻게 생성하고 조합할지를 다루는 패턴단순히 new로 만드는 게 아니라, 상황에 맞게 객체 생성 과정을 캡슐화하거나, 공통 인터페이스로 통일시켜줌Abstract Factory구체적인 클래스에 의존하지 않고, 서로 연관되거나 의존적인 객체들의 집합을 생성하는 인터페이스 제공Builder객체 생성 과정을 캡슐화하여 객체를 조립하며 생성, 동일한 생성 절차에서 서로 다른 결과 제공Factory Method상위 클래스에..
[정보 보안] 보안 공격 기법
·
💻 CS/정보처리기사
DoS 공격SYN 플러딩(SYN Flooding)TCP 프로토콜의 구조적 문제를 이용한 공격으로, SYN 패킷만 보내고 ACK는 보내지 않음.UDP 플러딩(UDP Flooding)대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송스머프 공격(Smurf)출발지 주소를 공격 대상의 IP로 설정하여, 네트워크 전체에 ICMP Echo 패킷을 브로드캐스트(Directed Broadcasting) 하여 마비시키는 공격.공격 대상 호스트는 다량으로 유입되는 패킷으로 인해 서비스 불능 상태에 빠짐죽음의 핑(Ping of Death, PoD)ICMP 패킷(핑)을 매우 크게 만들어 전송해 부하를 일으키는 공격랜드 어택(Land Attack)출발지 IP와 목적지 IP를 같은 값으로 만들어 보내, 수신자가 자기 자신에게 ..
[소프트웨어 구축] 테스트 커버리지
·
💻 CS/정보처리기사
1. 테스트 커버리지 개념테스트가 코드의 어느 정도를 검증했는지를 측정하는 지표결함을 놓치지 않도록 테스트 범위를 정의하고 향상시키기 위함여러 커버리지 기준으로 테스트의 완성도를 분석할 수 있음 2. 테스트 커버리지 유형기능 기반 커버리지라인 커버리지코드 커버리지 3. 코드 커버리지구분설명구문(문장) 커버리지(Statement Coverage)프로그램 내 모든 명령문을 적어도 한 번씩 수행결정(분기) 커버리지(Branch Coverage)프로그램 내 전체 결정(분기)가 적어도 한 번씩은 참/거짓 결과를 수행조건 커버리지(Condition Coverage)결정 명령문 내의 각 개별 조건식이 적어도 한 번은 참/거짓 결과 수행조건/결정 커버리지(Condition/Decision Coverage)전체 결정식뿐..