[BOJ 12787] 지금 밥이 문제냐
View as PDF
Submit solution
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
Points:
2
Time limit:
1.0s
Memory limit:
128M
Problem types
Allowed languages
평소에 전공 공부를 열심히 하는 황제는 시험기간에 형들이 IPv4, IPv6주소를 저장하는데 각각 최소 4바이트, 6바이트가 필요하다는 얘기를 듣고 아람이에게 질문했다.</p>
- 황제: "IPv8주소를 저장하는데는 최소 몇 바이트의 공간이 필요할까?"
- 아람: "당연히 8바이트의 공간이 필요하지"
- 황제: "아하! 그러면 127.0.0.1이라는 IPv4 주소는 컴퓨터는 모든 수를 이진수로만 저장 하니까 127=01111111, 0=00000000, 0=00000000, 1=00000001로 저장되겠군. 그런데 이 4개의 값은 따로 저장 되는 것이 아니라 하나의 부호가 없는 정수형 변수에 저장되니까 이 변수에는 위 4개의 이진수를 이어 붙인 01111111000000000000000000000001가 저장되겠구나. 음...십진수로 출력하면 2130706433이겠네. "
- 아람: "응 그렇지"
- 황제: "그러면 어떤 IPv8주소가 부호가 없는 정수형 변수에 저장 될 때 그 값을 십진수로 바꾸면 어떤 값이 나올까?? 그리고 만약 어떤 부호가 없는 정수를 IPv8 주소로 바꾼다면 어떻게 바꿔줘야 될까?"
- 아람: "..... 배고프다.. 밥이나 먹으러 가자!"
그러자 황제는 고민이 해결될 때까지는 밥을 못 먹으러 간다며 자리를 지킨다.
여러분이 황제를 도와 아람이와 황제가 점심시간에 맞춰 밥을 먹도록 도와주자.
입력 형식
입력의 첫째 줄에 테스트 케이스 T가 주어진다.</p>
각 테스트 케이스의 첫 줄에는 변환의 종류를 나타내는 값 M과 변환할 값 N이 주어진다.
M은 IPv8 주소를 부호가 없는 정수로 바꾸는 변환이면 1, 부호가 없는 정수를 IPv8 주소로 바꾸는 변환이면 2가 주어진다.
N은 M이 1일 경우 0~255사이의 정수로 이루어진 IPv8 주소, M이 2일 경우 부호가 없는 정수가 주어진다.
주어지는 부호가 없는 정수의 크기는 64비트 부호가 없는 정수의 범위를 넘어가지 않는다.
출력 형식
각 테스트 케이스마다 변환된 값을 출력한다.
예제 입력
3
1 70.236.217.197.157.238.150.80
2 5110699119940114000
2 0
예제 출력
5110699119940114000
70.236.217.197.157.238.150.80
0.0.0.0.0.0.0.0
힌트
실제로는 IPv4와 IPv6은 전혀 다른 포맷을 사용하며, IPv6 주소를 표현하는 데에는 16바이트가 필요합니다. (링크)
Comments