문제1055--IP Address

1055: IP Address

실행시간 제한: 1 Sec  메모리사용 제한: 128 MB
제출: 581  통과: 347
[제출] [채점기록] [묻고답하기]

문제 설명

길이가 32인 '1'과 '0'으로 이뤄진 문자열을 입력 받아, 이를 4개의 문자열로 나누고(각 나뉜 문자열의 길이는 8), 10진법을 사용하는 IP 주소의 형태(X.Y.Z.W)로 바꾸는 프로그램을 작성하라.

문자열의 맨 앞을 0번, 그 다음을 1번, ..., 마지막을 31번이라고 할 때, X, Y, Z, W는 다음과 같이 정의된 값을 가지게 된다.

  • X : 문자열의 0번 부터 7번까지를 묶어서 2진수로 보고, 10진수로 변환한 결과
  • Y : 문자열의 8번 부터 15번까지를 묶어서 2진수로 보고, 10진수로 변환한 결과
  • Z : 문자열의 16번 부터 23번까지를 묶어서 2진수로 보고, 10진수로 변환한 결과
  • W : 문자열의 24번 부터 31번까지를 묶어서 2진수로 보고, 10진수로 변환한 결과

예를 들어 문자열 11001011100001001110010110000000 를 X.Y.Z.W 의 형태로 변환하는 과정을 적으면 다음과 같다.

입력 11001011100001001110010110000000
위치 X(0..7) Y(8..15) Z(16..23) W(24..31)
나눈결과 11001011 10000100 11100101 10000000
계산 27+26+23+21+20 27+22 27+26+25+22+20 27
변환결과 203 132 229 128
최종결과 203.132.229.128

계산을 할 때, 맨 앞의 문자가 1일 경우 27을 더하고, 두번째의 경우 26 를 더하고, ..., 마지막의 경우 20을 더함에 유의하라. 0일 경우에는 어떤 수도 더하지 않는다.

입력 설명

입력의 첫 줄에는 변환 해야 하는 문자열의 개수 T가 입력된다.

그 다음 줄부터 T개의 줄에는 길이가 32인, 10진법의 IP 주소 형태로 변환해야 하는 문자열들이 입력된다.

출력 설명

입력된 문자열을 X.Y.Z.W 의 형태로 변환한 결과를 입력된 순서대로 한줄에 하나씩 출력한다.

자세한 형식은 Sample Output을 참조한다.

입력 예시 Copy

4
00000000000000000000000000000000
00000011100000001111111111111111
11001011100001001110010110000000
01010000000100000000000000000001

출력 예시 Copy

0.0.0.0
3.128.255.255
203.132.229.128
80.16.0.1

출처/분류