[JAVA]백준 2064번 - IP주소
2064번: IP 주소
네트워크에 연결되어 있는 컴퓨터들은 각각 하나의 IP 주소를 갖게 된다. 그리고 이러한 IP 주소를 갖는 컴퓨터들이 여러 개 모여서 하나의 IP 네트워크를 구성하게 된다. IP 네트워크는 ‘네트워
www.acmicpc.net
일단 오류 진짜 가득한 코드인데 일단 올려요 기록용으로 ㅠㅠ
package baekjoon;
import java.util.*;
import java.io.*;
public class b2046 {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
String a;
StringBuilder temp = new StringBuilder();
for (int i = 0; i < n; i++) {
//temp.setLength(0); // StringBuilder 객체 초기화
a = toStringbinary(br.readLine().split("\\."));
for(int j = 0 ; j < 32 ; j++)
{
if (temp.length() <= j || temp.charAt(j) == ' ')
{
temp.append(a.charAt(j));
}
else if (temp.charAt(j) != a.charAt(j))
{
temp.setCharAt(j, '0');
}
}
}
String b = "";
for(int i = 31 ; i >= 0 ; i--)
{
if(temp.charAt(i) != '0')
{
for(int j = 0 ; j <= i + 1 ; j++)
{
b += "1";
}
for(int j = 0 ; j < 32 - i ; j++)
{
b += "0";
}
break;
}
}
a = "";
for (int i = 0; i < 32; i += 8) {
a += Integer.parseInt(temp.substring(i, i + 8), 2);
if(i < 24)
a += ".";
}
bw.write(a+"\n");
a = "";
for (int i = 0; i < 32; i += 8) {
a += Integer.parseInt(b.substring(i, i + 8), 2);
if(i < 24)
a += ".";
}
bw.write(a);
bw.close();
}
public static String toStringbinary(String list[])
{
String a = "";
for(int i = 0 ; i < 4 ; i++)
{
int n = Integer.parseInt(list[i]);
String temp = Integer.toBinaryString(n);
if(temp.length() < 8)
{
for(int j = 0 ; j < 8 - temp.length() ;j++)
a += "0";
}
a += temp;
}
return a;
}
}
진짜 생각나는대로 계속 수정하면서 쓴 코드로 너무 뒤죽박죽인데 예제코드는 돌아가는데
질문게시판에 있는 것들도 안 돌아가고 애초에 오류나서 채점도 안되네요...
일단 알아낸 점
Integer.parseInt(String, 2)하면 2진수가 10진수 되는거
Integer.toBinaryString()하면 10진수가 2진수 되는
더하기 할 때 자동으로 더해질 변수 자료형으로 더해지는 애 형변환 돼서 더해지는거
스트링버퍼로 할 때 초기화 setLength(0)로 하는거
스트링버퍼에 setCharAt()있는거
split() 할 때 . 기준으로 하고 싶으면 \\. 으로 해야하는거
[알고리즘 문제풀이] 백준 2064 IP주소 (JAVA) (tistory.com)
[알고리즘 문제풀이] 백준 2064 IP주소 (JAVA)
https://www.acmicpc.net/problem/2064 2064번: IP 주소 네트워크에 연결되어 있는 컴퓨터들은 각각 하나의 IP 주소를 갖게 된다. 그리고 이러한 IP 주소를 갖는 컴퓨터들이 여러 개 모여서 하나의 IP 네트워크
cano721.tistory.com
도저히 안되겠어서 구글링했는데 저는 아예 접근이 잘못됐었네요
이 선생님이 설명 장난아니십니다
코드를 봐도 이해가 조금 안돼서 일단 올리고서 공부하겠슴니다