Study for Backend/Programming language - Java

[Java 기초연습] 프로그래머스 - 행성 X3

지미니박 2024. 2. 28. 19:03

https://www.acmicpc.net/problem/2830

 

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int[] binaryCnt = new int[20]; // 1,000,000의 이진 표현은 최대 20비트 필요
        int name;
        long answer = 0L;

        for (int i = 0; i < N; i++) {
            name = Integer.parseInt(br.readLine());//행성주민의 이름은 자연수
            for (int j = 0; j < 20; j++) { // 자리수만큼 돌림
                if ((name & (1 << j)) != 0) {
                    // 1의 비트를 j만큼 왼쪽으로 이동 후, 두 비트가 모두 1이면 배열값 +1 해줌
                    binaryCnt[j]++;
                }
            }
        }

        for (int i = 0; i < 20; i++) {
            // XOR 값 = 0의 개수 * 1의 개수 * 비트 값
            answer += (1L << i) * binaryCnt[i] * (N - binaryCnt[i]);
        }
        br.close();
        System.out.println(answer);
    }
}

 

참고link

https://hong-play-world.tistory.com/35

 

[2830] 행성X3

✔️ 문제 https://www.acmicpc.net/problem/2830 ✔️ 해결 방법 처음에 이중 for문으로 서로의 친밀도를 계산했는데 그렇게 되면 n이 1,000,000 시간복잡도가 O(n^2)이 되어 시간 초과가 된다. 따라서 다른 방

hong-play-world.tistory.com

https://blog.naver.com/jhsfully/223078021804

 

2830번: 행성 X3

문제 링크 https://www.acmicpc.net/problem/2830 개요 백준에서 행성 X3문제가 너무어려워서, 비슷한 문...

blog.naver.com

https://staticclass.tistory.com/25

 

07. [자바] 비트 연산자 &, |, ^, ~, <<, >>

비트 연산자란? 비트 연산자는 피연산자를 비트단위로 논리 연산한다. 피연산자를 이진수로 표현했을 때의 각 자리를 알아보자 |(OR연산자) 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻는다.

staticclass.tistory.com