분류 전체보기 212

[정보보안기사 요약 1]UNIX/ LINUX 기본 학습

passwd 파일: 사용자의 개인정보 저장, 콜론(:)을 구분자로 7개의 필드cat /etc/passwdcat /etc/shadow쉘(Shell): 사용자와 커널 간 인터페이스 역할을 하는 프로그램id 사용자계정: UID와 GID 정보 확인passwd 계정: 사용자 패스워드 변경, 본인의 비밀번호 변경, root는 전계정 비밀번호 변경 가능 group 파일: 그룹 정보를 저장한 파일, 4개의 필드로 구성cat /etc/group 입출력 재지정(I/O Redirection) 기능: 키보드나 모니터가 아닌 파일로 재지정FD: 프로세스 별로 오픈한 파일을 식별하기 위해 부여한 파일 번호를 의미표준 입력(STDIN, FD:0)표준 출력(STDOUT, FD:1)표준 에러(STDERR, FD:2)리다이렉션 기호(..

정보보안기사 2026.05.01

[정보보안기사 요약 1] 윈도우 기본 학습

윈도우 인증 과정LSA(Local Security Authority): 윈도우 보안 서브시스템의 중심(핵심 프로세스), 로컬 로그인인지 도메인 로그인인지 판단하여 적절한 인증 패키지(NTLM, Kerberos 등) 호출, 인증 성공 시 사용자에게 접근 토큰(Access Token) 생성 및 부여, 로컬 보안 정책 관리 및 SRM이 전달한 감사 메시지를 기반으로 보안 이벤트 로그 기록SAM(Security Account Manager): 로컬 사용자 및 그룹 계정 정보(패스워드 해시값 등)를 저장하는 데이터베이스, LSA의 인증 요청을 받아 사용자가 입력한 패스워드 정보와 DB 속 해시값을 비교하여 인증 타당성 검증, 시스템 내 물리적 파일(C:\Windows\System32\config\SAM)과 레지스..

정보보안기사 2026.04.02

정보보안기사 취득(2025.12.19)

정보처리기사 취득후 빅데이터분석기사 vs 정보보안기사 고민을 하다가 공부할 시간의 여유가 좀 있는 편이여서 정보보안기사를 취득했다.필기가 오히려 어려웠고 실기는 쉬웠던거 같다.알기사? 책으로 공부했었는데 문제 1200문제중 대략 600문제정도 푸니까 바로 합격할 수 있다.(실기, 필기 둘 다) 💡 이렇게 공부했습니다첫째, 필기는 접수와 동시에 시작하기. 필기 원서를 넣은 날부터 바로 책을 폈다. 대충 암기하고 넘어가기보다는 머릿속으로 완벽히 이해가 될 때까지 꽤 세세하게 파고들며 공부했던 게 큰 도움이 됐다.둘째, 필기 가합격을 확인했다면 바로 실기 모드로 전환하기. 필기시험 후 가채점으로 합격을 확인한 순간, 쉬지 않고 곧바로 실기 공부를 시작했다. 흐름을 놓치지 않는 게 포인트다.

정보보안기사 2026.04.01

[Level.0] 옹알이(1)

문제 설명: 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항1 ≤ babbling의 길이 ≤ 1001 ≤ babbling[i]의 길이 ≤ 15babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.문자열은 알파벳 소문자로만 이루..

[Level.0] 정수를 나선형으로 배치하기

문제 설명: 양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. 제한사항1 ≤ n ≤ 30문제 해결def solution(n): answer = [[0] * n for _ in range(n)] dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] x, y, direction = 0, 0, 0 for cnt in range(1, n**2 + 1): answer[x][y] = cnt nx, ny = x + dx[direction], y + dy[direction] if not (..

[Level.0] 평행

문제 설명: 점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다. [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요. 제한사항dots의 길이 = 4dots의 원소는 [x, y] 형태이며 x, y는 정수입니다.0 ≤ x, y ≤ 100서로 다른 두개 이상의 점이 겹치는 경우는 없습니다.두 직선이 겹치는 경우(일치하는 경우)에도 1을 return 해주세요.임의의 두 점을 이은 직선이 x축 또는 y축과 평행한 경우는 주어지지 않습니다.문제 해결def get_dots(dot1, dot2): retur..

[Level.0] 겹치는 선분의 길이

문제 설명: 선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요. 제한사항 lines의 길이 = 3lines의 원소의 길이 = 2모든 선분은 길이가 1 이상입니다.lines의 원소는 [a, b] 형태이며, a, b는 각각 선분의 양 끝점 입니다.-100 ≤ a 문제 해결def solution(lines): dicti = {} for start, end in lines: for i in range(start, end): ..

[Level.0] 주사위 게임(3)

문제 설명: 1부터 6까지 숫자가 적힌 주사위가 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다.네 주사위에서 나온 숫자가 모두 p로 같다면 1111 × p점을 얻습니다.세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q)2 점을 얻습니다.주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p ≠ q)라고 한다면 (p + q) × |p - q|점을 얻습니다.어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r(q ≠ r)이라면 q × r점을 얻습니다.네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습니다. ..

[Level.0] 안전지대

문제 설명: 다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다. 지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다. 지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완성해주세요. 제한사항board는 n * n 배열입니다.1 ≤ n ≤ 100지뢰는 1로 표시되어 있습니다.board에는 지뢰가 있는 지역 1과 지뢰가 없는 지역 0만 존재합니다.문제 해결def solution(board): row = len(board) col = len(board[0]) answer = [[..

[Level.0] 연속된 수의 합

문제 설명: 연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요. 제한사항1 ≤ num ≤ 1000 ≤ total ≤ 1000num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.문제 해결def solution(num, total): start = (2*total//num - num+1)//2 return [start + i for i in range(num)] 주석: total = (num * (2 * start + num - 1)) / 2 == start = (2*tot..