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