본문 바로가기

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

[기초-반복실행구조] 문자 한 개 입력받아 알파벳 출력하기 && 프록시 서버

프록시 서버는 클라이언트가 다른 네트워크 서비스를 간접적으로 접근할 수 있게 하는 응용 프로그램이나 컴퓨터이다. 쉽게 말하자면 클라이언트와 서버랑 연결되어 있는데, 그 사이에 중계기 역할로 대리로 통신을 수행하는 것이 프록시, 그 기능을 하는 것을 프록시 서버라고 부른다.

작동원리는 프록시가 프록시 서버에 요청된 내용을 받아 서버로부터 가져온 내용을 캐시를 이용해 저장을 한다. 그 이후 이 정보를 요구 하는 클라이언트에게 보내 준다. 이와 비슷한 원리를 사용하는 해킹 기법이 MITM(Man In The Middle)이 있는데, 이는 공격자가 프록시가 되어 대상 타겟과 서버와의 통신을 중간에 지켜보는 것이다.

프록시 서버에 사용이유는 주로 보안을 위해 컴퓨터를 익명으로 유지한다던지, IP추적을 안당하기 위함이다. 또 보안이나 통제를 빠져나간다던지, 지역제한을 우회하기위함이다. 헌데 익명성 때문에 바이러스 유포나 루머를 이를 통해 전파한다. 이 때문에 몇몇 서버는 누구나 이용하도록 만든 공개 프록시 서버를 사용할경우 접근을 금지 시킨다.

문제 설명

영문자 한 개가 입력되었을 때 그 문자까지의 알파벳을 순서대로 출력해보자.
(a ~ z)

입력

영문자 한 개가 입력된다.
(a ~ z)

출력

a부터 입력한 문자까지 순서대로 공백을 두고 출력된다.

입력 예시

f

출력 예시

a b c d e f

도움말

do
{  //코드 블럭
 ...
}while(조건);  //주의 do~while( ) ; 구조는 반드시 마지막에 세미콜론(;)을 붙여야 한다.

구조를 사용하자.

do
{  //코드 블럭
 ...
}while(조건);
구조는 while( ) { ... } 과 유사한 반복 실행 구조를 만들 수 있다. 다른 점은 적어도 1번은 무조건 실행된다는 점이고, 마지막에 세미콜론을 반드시 붙여야 한다.

예시
int x;
scanf("%c", &x);
do
{
  printf("%c", x);
  x+=1; // x+=1; 는 x=x+1과 같은 의미이다.
}while(x<'z'+1); //의미 : x 의 값이 z보다 작은 동안 만 반복된다.

** 복합 대입 연산자에 대해...
컴퓨터의 세상에서 반복되는 것은 다시 쓰기 귀찮다. 즉, 어딘가에 정의가 되어있다면 재사용하던가,

아니면 보다 간단히 쓰고 싶어한다.

복합 대입 연산자는 일반적인 연산자와 대입 연산자를 함께 사용해 보다 간단히 표현하는 방법이다.

예를 들어 어떤 연산자 X와 대입 연산자를 함께 써 "X="라고 표현되면 이는 X 연산후 대입하라는 의미를 가지는 간단한 형태이다.

+=, -=, *=, /=, %= ... 등의 형태들이 모두 가능하며 의미는 아래와 같다.

예를 들어 

n = n + 3; 은
n += 3; 으로 간단히 표현할 수 있다.

n = n << 1; 는
n <<= 1; 로 간단히 표현할 수 있다.

아래는 서로 다른 형태이지만 같은 기능을 하는 코드들이다.
n++;
n=n+1;
n+=1;