Programming/Codeup.kr기초100제 && 컴퓨터 이야기

[기초-반복실행구조] 0 입력될 때까지 무한 출력하기2 && DoS

피터파스칼 2017. 1. 11. 11:54

DoS공격은 Denial of Service의 준말으로 서비스 거부 공격이다. 흔히들 말하는 디도스(DDoS)가 여기에 속한다. 공격 방식은 어떤 시스템에 접속량을 대폭 늘리며 트래픽을 증가시켜 다른 정상 사용자들도 서비스를 이용하지 못하게 하는 것이다. 수강신청이나 선착순 구매등으로 서버가 다운되는 것을 의도적으로 유발한다고 생각하면 된다. 해킹의 한 종류라 할 수 없는게 시스템을 조작하거나 분석하는 행위가 아니기 때문이다. 하지만 막을 방법이 뚜렷하게 없고 피해량도 어마어마하기 때문에 사이버테러에 속한다. 또, DoS공격을 하기위해 해킹이 선행되어야하는 경우가 많다.

DDoS는 DoS에서 한단계 더 나아간 공격으로 Distrubuted Denial of Service attack, 즉 분산 서비스 거부 공격이다. 다른 컴퓨터들을 좀비PC로 만들어 그 컴퓨터까지도 공격에 가담하게 하여 더 많은 트래픽을 요구시킨다. 심지어는 프린터와 CCTV도 좀비로 만들어 공격을 시킨다고 한다.

만약 이러한 공격을 시도한다면

<정보통신망 이용촉진 및 정보보호 등에 관한 법률 48조(정보통신망 침해행위 등의 금지)>의 3항

"누구든지 정보통신망의 안정적 운영을 방해할 목적으로 대량의 신호 또는 데이터를 보내거나 부정한 명령을 처리하도록 하는 등의 방법으로 정보통신망에 장애가 발생하게 하여서는 아니 된다."

<제71조(벌칙> 10번

"제 48조 제 3항을 위반하여 정보통신망에 장애가 발생하게 한 자"

에 따라 5년 이하의 징역 또는 5천만원 이하의 벌금 처한다.

문제 설명

정수가 순서대로 입력된다.
(-2147483648 ~ 2147483647, 단 개수는 알 수 없다.)

0이 아니면 입력된 정수를 출력하고

0이 입력되면 출력을 중단해보자.

입력

정수가 순서대로 입력된다.
(-2147483648 ~ 2147483647, 단 개수는 알 수 없다.)

출력

입력된 정수를 줄을 바꿔 하나씩 출력하는데, 0이 입력되면 0을 출력하고 종료한다.

입력 예시

7 4 2 3 0 1 5 6 9 10 8

출력 예시

7 4 2 3 0

도움말

while(조건)
{
  ...;
}
구조를 사용하자.

참고
if(조건)
{ //코드블럭
  ...;
}

으로 작성하면 주어진 조건이 참인 경우만 코드블럭 부분이 실행된다.

비슷하게 어떤 조건에 따라 반복적으로 실행할 때에는.. if를 while 로 바꾸어..

while(조건)
{ //코드블럭
  ...;
}

를 이용해 코드블럭의 내용을 반복적으로 수행시킬 수 있다.
수행되는 과정은

1. 먼저 조건을 검사한다.
2. 코드블럭을 실행한다.
3.. 다시 조건을 검사한다.
4.. 코드블럭을 실행한다.
...

와 같이 주어진 조건이 참일 동안 계속적으로 반복 실행한다.

이렇게 while(조건){...}; 을 이용하면 goto 문 없이도 반복을 만들어낼 수 있다.

예시
int n=1;   //처음 조건검사를 넘어가기 위해 0이 아닌 값 입력
while(n!=0)
{
  scanf("%d", &n);
  printf("%d", n);
}
Python에서도 if문과 같이 만들면 된다.
예시
n = 1
while(n!=0):
n = int(input())
print(n)