-
import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); long N = Integer.parseInt(br.readLine()); int pow = 1; boolean b = false; if (N == pow) { System.out.println(1); } else { for (int i = 0; i < 30; i++) { pow *= 2; if (N == pow) { b = true; break; } } if (b) System.out.println(1); else System.out.println(0); } } }
- Math.pow 를 써야하는건가 고민했는게 이게 더 나을듯
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int N = Integer.parseInt(br.readLine()); boolean flag = true; while(N > 1) { if(N%2 != 0) { flag = false; break; } N /= 2; } if(flag) bw.write("1"); else bw.write("0"); bw.flush(); bw.close(); br.close(); } }
- 다른 정답자 풀이
- 출력할때 BufferedWriter 사용
- while문에서 N값을 계속 2로 나눠줌 -> 여기서 1이면 2의 제곱이고, 1이 아니면 2의 제곱이 아님
2의 제곱이라는건 N 값을 2로 계속 나눴을때, 몫이 1이면 결국 2의 제곱임