[BOJ] 3107 : IPv6

3107 : IPv6

풀이

8그룹 콜론은 7개

완전 하드코딩처럼 했다…틀린줄알았는데 맞아서신기;;

2001:db8:85a3::8a2e:370:7334 데이터 테스트

0,1,2 3,4 5,6,7 -> dd:2, idx:5 //2+1부터 7-idx번 3,4

::1 데이터 테스트

0,1,2,3,4,5,6 7 -> dd:0, idx:1 //0+1부터 7-idx번 0, 0,0,0,0,0,0, 1

코드

#include <iostream>
#include <algorithm>
#include <functional>
#include <cstring>
#include <string>
#include <queue>
#include <vector>
using namespace std;
int main(){
    string input;
    cin>>input;
    string a[8];
    int idx=0;
    int dd=-1000;
    for(int i=0;i<input.size();i++){
        if(input[i]!=':'){
            a[idx]+=input[i];
        }
        else{
            if(input[i+1]==':'){
                i++;
                dd=idx;
            }
            idx++;
        }
    }

    int f=0;
    for(int i=0;i<8;i++){
        if(i==dd+1){
            if(i==7){
                cout<<"0000";
            }else{
                for(int j=0;j<7-idx;j++){
                    cout<<"0000:";
                    i++;
                }
                i--;
            }
        }else{
            for(int j=0;j<4-a[f].size();j++){
                cout<<0;
            }
            if(i==7){
                cout<<a[f];
            }else{
                cout<<a[f]<<':';
            }
            f++;
        }
    }
    return 0;
}

Written on March 15, 2019