λšœλΆ€λ‹ˆμ˜ Devlog

[Goorm] νŒŒμ†λœ 램 (Java)

by λšœλΆ€λ‹ˆ

 

 

ꡬ름LEVEL

μ½”λ”©ν…ŒμŠ€νŠΈμ—μ„œ κ°€μž₯ 높은 비쀑을 μ°¨μ§€ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό μ œμž‘ν•˜κ³  풀이할 수 μžˆλŠ” 온라인 저지 μ„œλΉ„μŠ€μž…λ‹ˆλ‹€. κΈ°μ—…μ—μ„œ μ„ ν˜Έν•˜λŠ” C, C++, 파이썬(Python), μžλ°”(Java), μžλ°”μŠ€ν¬λ¦½νŠΈ(Javascript) 이

level.goorm.io

 

이 λ¬Έμ œλŠ” 2의 제곱수의 μš©λŸ‰μ„ 가진 램 μ€‘μ—μ„œ νŒŒμ†μ΄ λ˜μ–΄ 2의 제곱수의 μš©λŸ‰μ„ 가지지 μ•ŠλŠ” 램의 μˆ˜μ™€ 번호λ₯Ό 좜λ ₯ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. λΉ„νŠΈ 마슀크λ₯Ό μ΄μš©ν•˜λ©΄ 되게 κ°„λ‹¨ν•œ 문제인데 ν•  쀄 λͺ°λΌμ„œ μ—΄μ‹¬νžˆ μ°Ύμ•„λ΄€λ„€μš”.. πŸ˜‚πŸ˜‚

 

2의 n제곱 수λ₯Ό 2μ§„μˆ˜λ‘œ λ‚˜νƒ€λ‚΄λ©΄

2의 0 제곱 : 1 → 1

2의 1 제곱 : 2 → 10

2의 2 제곱 : 4 → 100

2의 3 제곱 : 8 → 1000

κ³Ό 같이 1둜 μ‹œμž‘ν•˜μ—¬ 였λ₯Έμͺ½μ„ λͺ¨λ‘ 0으둜 μ±„μš°λŠ” ν˜•νƒœμž…λ‹ˆλ‹€.

 

λ§Œμ•½ 2의 μ œκ³±μ—μ„œ 1을 λΊ€ 수λ₯Ό 2μ§„μˆ˜λ‘œ λ‚˜νƒ€λ‚΄λ©΄

2의 0 제곱 - 1 : 0 → 0

2의 1 제곱 - 1 : 1 → 1

2의 2 제곱 - 1 : 3 → 11

2의 3 제곱 - 1 : 7 → 111

κ³Ό 같이 0 μ œκ³±μ„ μ œμ™Έν•˜κ³ λŠ” λͺ¨λ‘ 1둜 이루어진 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

이 사싀을 μ΄μš©ν•˜λ©΄ μž„μ˜μ˜ 수 n이 2의 μ œκ³±μˆ˜μΈμ§€ νŒλ³„μ΄ κ°€λŠ₯ν•΄μš”! 😎😎

nκ³Ό n - 1을 λΉ„νŠΈ μ—°μ‚°μž &λ₯Ό μ΄μš©ν•΄μ„œ κ³„μ‚°ν–ˆμ„ λ•Œ 2의 제곱수이면 κ²°κ³Όκ°€ 0이 λ‚˜μ˜΅λ‹ˆλ‹€.

(& μ—°μ‚°μžλŠ” 두 수 λͺ¨λ‘ 1이어야 결괏값에 1이 μ†ν•˜κ²Œ 되기 λ•Œλ¬Έμž…λ‹ˆλ‹€)

즉, n이 2의 제곱수이면 μ•„λž˜μ™€ 같은 κ²°κ³Όλ₯Ό 얻을 수 μžˆλ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€.

& μ—°μ‚° κ²°κ³Ό

μ΄λŸ¬ν•œ 사싀을 μ μš©ν•˜μ—¬ λ‹€μŒκ³Ό 같이 문제λ₯Ό ν’€ 수 μžˆμŠ΅λ‹ˆλ‹€.

import java.io.*;
import java.util.*;

class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine()); // 램 개수
		ArrayList<Integer> error = new ArrayList<>();
		StringTokenizer st = new StringTokenizer(br.readLine());
		for (int i = 1; i <= n; i++){
			int ram = Integer.parseInt(st.nextToken());
			if ((ram & (ram - 1)) != 0) // 2의 제곱이 μ•„λ‹Œ 경우
				error.add(i);
		}
		
		int errorLen = error.size();
		if (errorLen > 0) {
			System.out.println(errorLen);
			for (int i = 0; i < errorLen; i++)
				System.out.printf("%d ", error.get(i));
		}
		else
			System.out.println(errorLen);
	}
}

 


πŸ”— Reference

πŸ‘‰ 2의 n제곱 μˆ˜μΈμ§€ νŒλ³„ν•˜κΈ°

λΈ”λ‘œκ·Έμ˜ 정보

λšœλΆ€λ‹ˆμ˜ Devlog

λšœλΆ€λ‹ˆ

ν™œλ™ν•˜κΈ°