전체 글(366)
-
[BOJ 15989] 1, 2, 3 더하기 4
- 문제 요약 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.합을 나타낼 때는 수를 1개 이상 사용해야 하며, 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다.(테스트케이스의 수 T가 주어진다. n은 양수이며 10,000보다 작거나 같다.) - 알고리즘 정리 DP 문제입니다. DP[X][a] (정수 X를 만들 때 a로 끝나는 경우의 수) DP[i][1] = DP[i-1][1] DP[i][2] = DP[i-2][1] + DP[i-2][2] DP[i][3] = DP[i-3][1] + DP[i-3][2] + DP[i-3][3] - 코드 작성 #includeusing namespace std;#define MAX 10001int t,n,dp..
2024.11.18 -
[BOJ 2225] 합분해
- 문제 요약 0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 구하는 프로그램을 작성하시오.덧셈의 순서가 바뀐 경우는 다른 경우로 센다. (1+2와 2+1은 서로 다른 경우). 또한 한 개의 수를 여러 번 쓸 수도 있다.첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다.(1 - 알고리즘 정리 DP 문제입니다. dp[K][N] = X (K개를 더해서 N을 만들 수 있는 경우의 수가 X)dp[K][N] = dp[K-1][0] + dp[K-1][1] + ... + dp[K-1][N] 위와 같이 점화식을 작성하면 문제를 해결할 수 있습니다. - 코드 작성 #includeusing namespace std;#define MAX 201typedef long long ll;l..
2024.11.18 -
[BOJ 1074] Z
- 문제 요약 크기가 2^N x 2^N인 2차원 배열을 Z모양으로 탐색하려고 한다.아래의 사진은 2^2 x 2^2 크기의 배열을 방문한 순서이다.N이 주어졌을 때, r행 c열을 몇 번째로 방문하는지 출력하는 프로그램을 작성하시오. (1 ≤ N ≤ 15 / 0 ≤ r, c - 알고리즘 정리 분할정복을 이용하여 해결했습니다. 2^N 크기의 배열을 십자 모양으로 4등분 해서, 각 블록마다 재귀를 돌려줍니다.r과 c가 현재 블럭블록 안에 있다면 그 상태로 재귀를 돌리고, 만약 현재 블록 안에 없다면 현재 블록의 크기만큼 탐색을 마치고 다음 블록으로 넘어간다는 소리가 됩니다. 그러므로 현재 블록의 넓이를 결괏값에 더해주면 됩니다. - 코드 작성 #includeusing namespace std;int n,r..
2024.11.18 -
checkflag 풀이 (PW = FLAG)
보호되어 있는 글입니다.
2024.11.12 -
API Portal 풀이 (PW = FLAG 앞 11글자)
보호되어 있는 글입니다.
2024.11.08 -
old-37 풀이
파일을 업로드할 수 있는 페이지입니다.코드 해석부터 해보면....현재 시간이 들어간 파일이 하나 만들어지고, 파일의 내용으로 127.0.0.1이 들어갑니다.파일 이름에서 필터링을 해준 후, 열어서 IP를 적어줍니다.마지막으로 IP 주소의 7777 포트에 소켓 통신으로 FLAG를 보내줍니다. 7777 포트로 포트포워딩을 해준 다음 nc으로 포트를 열고, tmp-[현재시간]이 내용인 파일을 만들어서 보내주면 됩니다.
2024.11.06