본문 바로가기

분류 전체보기

(133)
[백준 11000 C++] 강의실 배정 오늘은 백준 11000번 강의실 배정 문제에 대해 다뤄볼 예정이다. 강의실 배정 문제 링크 (백준 11000번 문제): https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 문제 설명 백준 11000번 문제는 S(i)에 시작해서 T(i)에 끝나는 N개의 수업이 주어지는데, 최소의 강의실을 사용해서 모든 수업을 가능하게 해야 한다. 예를 들어, 1시 ~ 3시까지 수업으로 인해 강의실을 사용하고 있는데, 2시 ~ 4시 수업이 존재할 경우 새로운 강의실을 마련해야한다. 즉, 2개의 강의실이 필요하게 된..
[백준 10830 C++] 행렬 제곱 오늘은 백준 10830 퍼즐에 대해 다뤄볼 예정이다. 백준 10830번 문제는 행렬의 제곱 값을 구하는 문제이다. 행렬 제곱 문제 링크: https://www.acmicpc.net/problem/10830 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 설명 입력 받은 행렬의 거듭 제곱 값을 구해야하는 문제이다. 예를 들어, 아래와 같은 행렬이 존재한다고 가정해보자. 1 2 3 4 5 6 7 8 9 그럼, 위 행렬의 제곱 값을 구해보면, 아래와 같은 과정을 거치게 된다. 1 2 3 1 2 3 (1 X 1 + 2 X 4 ..
[C언어] 작업 디렉터리(폴더) 변경 함수 (chdir) 작업 디렉터리 변경을 위해, chdir 함수에 대해 알아보자. chdir 은 change working directory의 줄임말로 흔히 Terminal에서 cd 명령을 통해 디렉터리를 변경할 때의 동작과 동일하다. chdir() 함수는 현재 프로세스의 작업 디렉토리에만 영향을 미치며, 아래와 같이 사용된다. #include ... char *directory = "/tmp"; int ret; ret = chdir (directory); 위 코드에서도 알 수 있다시피, C언어에서 chdir() 함수를 사용하기 위해서는 #include 헤더를 추가해줘야 한다. 이후, 이동하고자 하는 디렉터리를 인자로 넘겨줌으로써 chdir() 함수를 호출할 수 있다. 함수 호출 시, 디렉토리 이동에 성공하게 되면 0을 반..
[백준 1525 C++] 퍼즐 오늘은 백준 1525 퍼즐에 대해 다뤄볼 예정이다. 백준 1525번 문제는 BFS(Breadth First Search) 알고리즘을 사용하는 문제이다. 퍼즐 문제 링크: https://www.acmicpc.net/problem/1525 1525번: 퍼즐 세 줄에 걸쳐서 표에 채워져 있는 아홉 개의 수가 주어진다. 한 줄에 세 개의 수가 주어지며, 빈 칸은 0으로 나타낸다. www.acmicpc.net 백준에 BFS 문제를 풀다보면 최단 경로를 구하는 문제가 주로 등장하곤 한다. 그런데, 퍼즐 1525번 문제는 여태껏 풀었던 문제와는 조금 다른 문제 였던 것 같다. 문제 설명 1 2 3 4 0 5 7 8 6 위와 같은 입력이 주어졌을 때, 1 2 3 4 5 6 7 8 0 최소한의 이동으로 위와 같이 만들어..
TCP vs UDP TCP 와 UDP 에 대해 알아보기 위해서는 우선 프로토콜(Protocol) 이 무엇인지 알아야한다. 그럼 프로토콜(Protocol) 이란 무엇일까? Protocol 이란? 프로토콜(Protocol)은 두 개체 간에 통신을 원활하게 하기 위해 필요한 통신 규약을 말하며, 둘 이상의 통신 개체 간에 교환되는 메세지 포맷과 순서 뿐만 아니라, 메세지의 송수신과 다른 이벤트에 따른 행동들을 정의한다. Protocol 에 대해 알아보았으니 이제 TCP와 UDP에 대해 알아보도록 하자. 두 프로토콜은 Transport layer 에 해당한다. TCP (Transmission Control Protocol) TCP 는 연결 지향적인(connection-oriented) 프로토콜로, 연결이 설정되면 데이터를 두 방향..
[Github] 토큰 인증 로그인 Github Token Authentication (깃헙 토큰 인증) 평소와 같이 Github에 Push 를 하려고 했는데, 아래와 같은 문구가 뜨는 것을 확인하였다. remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. 그리하여, 링크를 따라가서 확인을 해보니, 2021. 8. 13일 이후 Github 인증 방식이 토큰 인증 방식으로 변경되었음을 알 수 있었다. https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ Token authenticati..
시큐어 코딩 (XPath Injection) XPath Injection 이란? 외부 입력 값을 적절한 검사과정 없이 XPath 쿼리문 생성을 위한 문자열로 사용하면, 공격자는 프로그래머가 의도하지 않았던 문자열을 전달하여 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하고 임의의 쿼리를 실행하여 인가되지 않은 데이터를 열람할 수 있게 만드는 공격 XPath 란? XPath는 XML 문서의 일부에 주소를 지정하기 위한 언어로, XSLT와 XPointer에서 모두 사용된다. XPath 역할 XPath는 XML 문서를 노드 트리로 모델링하여 경로 표현식(Path Expression)을 통해 XML 문서의 노드 또는 노드 집합을 선택한다. 이 때, 경로 표현식은 기존 컴퓨터 파일 시스템으로 작업할 때 볼 수 있는 표현식과 매우 유사하다. 이러한 XPath ..
[DVWA] Blind SQL Injection SQL Injection (Blind) If the web page where you want to attack doesn't print any errors and query result list, the attack from this pattern is hard to succeed. Because it doesn't provide query result data, we cannot confirm the data through attacks like a UNION query. In this case, Blind SQL Injection can usefully be used. In other words, the attack is an attack method that spills out a database..