일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 소프트웨어
- CodeEngn
- 알고리즘
- 드림핵
- 네트워크보안
- 모의해킹
- XSS
- ftz
- 순서도
- TCP
- 시스템
- 웹
- network
- System
- Web
- 시스템해킹
- 워게임
- 비박스
- WarGame
- 네트워크
- 해킹
- 소프트웨어보안
- hacking
- 리버싱
- dreamhack
- bee-box
- webhacking
- Webhaking
- reversing
- 웹해킹
- Today
- Total
목록Algorithm (22)
Without a Break

문제 재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다. 1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... , 10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 컴퓨터, ... 총 데이터의 개수는 항상 ab개의 형태로 주어진다. 재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다. 이를 수행해주는 프로그램을 작성하라. 입력 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다...

행 우선/열 우선 배열 2차원 배열 A(5,5)의 원소에 다음과 같은 모습으로 값을 저장해주는 알고리즘 순서도 [순서도] 1행 1열부터 값을 채운 뒤 A(R,C)에 V값을 저장하고, R과 V의 값을 1씩 증가시켜 저장하는 것을 R(행)이 다섯번째 행이 될 때까지 반복한다. R(행)이 5보다 크면 반복문을 끝내고 C의 값을 1 증가시켜 준 뒤, 다시 R=1부터 반복한다. (V의 값은 계속 증가) C(열)이 5보다 크면 알고리즘을 종료한다. 모래시계 모양 배열 2차원 배열 A(5,5)의 원소에 다음 그림과 같은 모습으로 값을 저장하는 알고리즘 순서도 [순서도] 1~3행까지는 저장된 값의 수가 감소(5->3->1)하고 3~5행까지는 저장된 값의 수가 증가(1->3->5)하므로 3을 변수 M으로 두고 2개의 중..

문제 M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완전제곱수는 64, 81, 100 이렇게 총 3개가 있으므로 그 합은 245가 되고 이 중 최솟값은 64가 된다. 입력 첫째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10000이하의 자연수이며 M은 N보다 같거나 작다. 출력 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 완전제곱수가 없을 경우는 첫째 줄에 -1을 출력한다. #include int main() { int m, n; int..

BCD 코드와 3초과 코드의 변환 4비트의 BCD 코드를 받아들여 4비트의 3초과 코드로 변환하여 출력하는 알고리즘 배열 B는 입력인 BCD 코드 보관용 배열 배열 E는 결과인 3초과 코드 보관용 배열 배열 A는 2진수 0011 보관용 배열 변수 C는 캐리 첫 번째 반복문 : 최하위 비트부터 상위 비트로 올라가면서 덧셈을 실시한다. BCD 코드 1자리와 0011 중 1자리를 그리고 캐리를 더한다. 합이 1보다 큰지 검사하고 1보다 크면, 2로 나눈 나머지를 저장하고 상위 캐리가 있음을 표시한다. 1보다 작으면 합 그대로를 저장하고 상위 캐리가 없음을 표시한다. 두 번째 반복문 : 배열 E를 차례대로 출력한다. 패리티 비트 검증 8비트 패리티 비트 오류 검사를 실시하는 알고리즘 P(0)에는 홀수 패리티(1..

2진수 -> 10진수 변환 D는 10진수 결과 값 보관하는 변수, SIGN은 양수(1) 음수(-1)를 구분하는 변수이다. T(1)이 양수일 때, 반복문은 T(2)부터 T(8)까지의 반복문을 진행한다. 반복문에서는 T(K)의 가중치를 구하고, T(K)가 1인 경우에만 가중치를 남기고 D에 가중치를 누적한다. 반복문이 끝난 후, 양/음 부호릅 ㅏㄴ복하고 10진수 결과값을 출력한다. T(1)이 음수인 경우, SIGN 변수에 음수임을 기억한 후 감수(B=1)를 반영하고 T(8)부터 T(2)까지 반복문을 진행한다. 반복문에서는 감수를 빼고, 상위 비트에도 감수가 발생하는지 검사한 후 발생한다면 -1을 1로 바꾼 후 1의 보수로 바꾼다. 감수가 발생하지 않는다면 B=0으로 바꿔준 후, 1의 보수로 바꾼다. 10진수..

Count 알고리즘 영어 점수를 보관하는 배열 변수 JUMSU를 선언한다. 영어 점수가 80점 이상인 학생들의 수를 보관할 변수인 COUNT의 초깃값을 0으로 잡는다 변수 i를 증가시켜 배열 JUMSU를 하나씩 비교할 것이므로 i의 초깃값을 1로 잡는다. 반복문 : JUMSU의 i번째 원소가 80점이 넘는지 확인하고, 넘는다면 COUNT 값을 1 증가시킨다. i 값을 1씩 증가시켜 JUMSU의 원소를 차례대로 검사한다. JUMSU는 100개의 원소를 가지므로, i가 100이 넘으면 반복문을 끝낸다. 최댓값과 최솟값 M : 영어 만점 중에서 수학 최고점을 보관하는 변수 i : 배열을 차례로 검사하기 위해 사용하는 인덱스 변수 반복문 : 영어 점수가 100점인 학생일 경우, 수학 점수가 수학 최고점(M)을 ..

문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 45보다 작거나 같은 자연수이다. 출력 첫째 줄에 n번째 피보나치 수를 출력한다. #include int arr[46] = {0,}; int f(int x) { if(x == 1 || ..

누승 활용 수열 문제1) 1부터 100까지의 누승의 합을 구하여 출력하는 알고리즘의 순서도 문제2) 누승을 재귀호출로 구하려면? 재귀호출을 위하여 START라는 시작 기호 대신, 자연수 N의 누승을 계산하는 알고리즘 이름과 인자 N을 괄호와 함께 명시 *동적 알고리즘 : 특정한 매개변수 값에 대한 함수 호출이 최초로 일어날 때에만 재귀호출 방식으로 계산 재귀호출에 따른 비효율성이 문제될 때가 있는데, 이를 줄이기 위하여 등장한 알고리즘 결과 값을 보관해둔 다음에 나중에 다시 호출될 때는 저장된 값을 가져다 사용하는 방식 최적 부분 구조(Optimal Substructure)이면서 중복호출의 비효율성이 심각한 경우 사용 제곱의 합 문제) S=(100*1)^2+(98*3)^2+...+(3*98)^2+(2*9..