전체 글

🗂️ 문제링크: https://www.acmicpc.net/problem/7562 💡 접근법나이트가 이동할 수 있는 범위를 dx와 dy로 생성한다.이후 맵의 크기에 맞게 False로 maps를 초기화하고, deque를 통해 큐를 생성한다. 초기 시작 위치값인 a와 b를 입력받고, maps[a][b]=0으로 초기화한다.while()문을 통해 큐의 맨 왼쪽 값을 pop하면서 나이트가 이동할 수 있는 범위를 모두 탐색한다. 이때 맵을 벗어나지 않으면서 방문한 적 없는 위치일 경우 큐에 현재 위치를 추가하고 maps에 현재 값을 업데이트한다. 이때 업데이트되는 값은 처음부터 지금까지 이동한 횟수를 나타낸다. 만약 종료 위치에 도달했을 경우 큐를 비워 while문을 빠져나온다.최종적으로 이동하려는 위치에 해당..
🗂️ 문제링크: https://www.acmicpc.net/problem/1966 💡 접근법제일 왼쪽의 값을 쉽게 꺼내기 위해 deque를 사용한다. 문서가 몇 번째로 인쇄되는지 횟수를 세기 위해 인덱스를 저장해야 한다. 이를 위해 queue에 튜플 형식으로 (인덱스, 중요도)를 저장한다.while()문을 통해 큐에서 왼쪽에 위치한 값을 하나씩 꺼내고, 만약 그 다음 값들 중 현재 값보다 중요도가 높은 문서가 있다면 다시 큐에 현재 값을 삽입한다. 이때 인쇄가 될 경우 카운트 횟수를 증가시켜야 한다. 따라서 큐에서 현재 값을 꺼낼 때 카운트를 1 증가시키고, 만약 현재 값보다 중요도가 큰 문서를 발견하여 현재 값을 다시 큐에 삽입하게 되면 카운트를 1 감소시킨다. target에 궁금한 문서를 저장해 ..
🗂️ 문제링크: https://www.acmicpc.net/problem/2667 💡 접근법DFS를 사용하여 연결된 집의 개수를 구한다. 이때 dx와 dy 리스트를 통해 현재 위치에서 상하좌우로 이동할 수 있게 하고, 이동한 좌표가 1) 지도 밖을 벗어나지 않는지, 2) 집이 존재하는지, 3) 방문한 적이 없는지를 확인한다. 모든 조건을 만족할 경우 재귀로 DFS를 수행하고, 수행한 횟수를 cnt로 계산한다.해당 값이 단지에 속하는 집의 개수가 된다. 😎 내 코드import sysN = int(sys.stdin.readline())house_num = []visited = [[False] * N for _ in range(N)]maps = []for _ in range(N): maps.appe..
🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡 접근법딕셔너리를 생성하여 입력값 clothes의 의상의 종류를 Key로, 의상의 종류에 해당하는 의상의 이름을 value로 추가한다. 옷을 조합하는 경우의 수는 다음과 같다.각각의 의상의 종류에서 의상을 0개 선택할 수도 있다. 따라서 의상의 개수 + 1을 종류 별로 계산하여 곱해주고, 적어도 하나의 의상은 입어야 하므로 곱한 값에서 1을 빼야 한다. 😎 내 코드def sol..
🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡 접근법phone_book에 있는 한 번호가 다른 번호의 접두어인지 확인하는 문제이다. 따라서 문자열을 기준으로 정렬을 수행한다. 이후 현재 번호가 바로 다음 번호의 접두어에 해당하는지 확인한다.만약 접두어에 해당할 경우 False를 출력하고, 해당하지 않을 경우 다음 번호를 비교한다. 😎 내 코드def solution(phone_book): answer = True ..
URL 접근 제한 미흡 취약점이란?인증 혹은 인가되지 않은 사용자가 접근 제한된 페이지에 접근하게 되는 취약점이다.인증 혹은 인가된 사용자가 접근 가능한 페이지에 대해 접근 제한이 존재하지 않거나 존재하지만 우회 포인트가 존재하여 발생한다. 💡 인증과 인가인증이란 로그인과 같이 인증된 사용자인지의 여부를 파악하는 것을 말하고, 인가란 특정 사용자가 해당 작업에 대한 권한의 존재 여부를 파악하는 것을 말한다. 공격 원리 분석파리미터 변조 취약점과 동일하게 공격 유무를 파악하기가 어렵다.공격자는 페이지의 URL을 유추해아 한다.이때 사전 대입을 통한 수동적 유추 방식과 자동화 도구를 통한 유추 방식이 있다. 보통 네이밍 패턴이나 robot.txt를 통해 유추하게 된다. 대응 방안접근 제한이 필요한 부분에 ..
파라미터 변조 취약점이란?사용자 입력값인 파라미터를 변조하여 악의적인 행위를 하는 공격이다. 공격 원리 분석정상적인 동작 예시사용자 입력값인 id 파라미터를 통해 id 값에 해당하는 회원 정보를 반환한다. 공격동작 예시공격자는 사전 대입으로 id 파라미터 변조를 통해 사용자 정보를 반환받는다. 서버사이드에서는 공격 유무를 파악하기 어렵다. 따라서 어플리케이션 단에서 세션을 통해 검증해야 한다. 또한 사용자 입력값을 통해 사용자 아이디를 받아오기 보다는 세션을 통해 사용자 아이디를 받아와야 한다. 대응 방안1. 사용자 입력 값에 대한 검증사용자의 입력 값을 반드시 받아서 처리해야 하는 경우에는 사용자의 세션과 파라미터로 입력받은 사용자를 비교한다. 2. 세션을 통한 처리회원 정보 수정이나 마이페이지 조회의..
파일 업로드 취약점이란?파일 업로드 기능에 대해서 발생하는 취약점으로, 공격자는 비정상 파일을 서버에 업로드한다.정상 파일과 비정상 파일은 서버 사이드 스크립트로 작성된 웹쉘 코드이냐 아니냐로 구분된다.  악성 스크립트가 웹 서버에 업로드 된다면 업로드한 파일을 통해 시스템 명령어를 실행할 수 있게 되어 OS Injection과 동일한 효과를 발생시킬 수 있는 취약점이다. 하지만 OS Injection과 다르게 웹 서비스에서 파일 업로드 기능은 필수 기능이므로, 취약점이 발생할 확률이 매우 높다. 공격 원리 분석사용자로부터 파일명을 입력받는다.기존의 경로와 입력받은 파일명을 조합한다.서버에 파일을 업로드하기 위해 파일 출력이 수행된다.업로드된 악성 스크립트를 통해 웹쉘에 접근하게 된다. 웹쉘이란 무엇인가..
jyjyjy25
기록하는 습관