Skip to content

Commit 79e583b

Browse files
Create taurus09318976.py
1 parent 8703d5a commit 79e583b

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
'''
2+
๋ฌธ์ œ์˜ ์˜๋„:
3+
์ด ๋ฌธ์ œ๋Š” 32๋น„ํŠธ ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜์˜ ๋น„ํŠธ๋ฅผ ๋’ค์ง‘๋Š” ๋ฌธ์ œ์ž„.
4+
์ฆ‰, ์ด์ง„์ˆ˜ ํ‘œํ˜„์—์„œ ์ฒซ ๋ฒˆ์งธ ๋น„ํŠธ์™€ ๋งˆ์ง€๋ง‰ ๋น„ํŠธ๋ฅผ ๋ฐ”๊พธ๊ณ ,
5+
๋‘ ๋ฒˆ์งธ ๋น„ํŠธ์™€ 31๋ฒˆ์งธ ๋น„ํŠธ๋ฅผ ๋ฐ”๊พธ๋Š” ์‹์œผ๋กœ ๋ชจ๋“  ๋น„ํŠธ์˜ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘์–ด์•ผ ํ•จ.
6+
7+
ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
8+
if๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋งˆ์ง€๋ง‰ ๋น„ํŠธ๊ฐ€ 1์ธ์ง€ ํ™•์ธํ•˜๊ณ , 1์ด๋ฉด ๊ฒฐ๊ณผ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹.
9+
์ด ๋ฐฉ๋ฒ•์€ "๋™์ „ ์ค๊ธฐ"์™€ ๊ฐ™์Œ
10+
์›๋ณธ์—์„œ ๋™์ „(๋น„ํŠธ) ํ•˜๋‚˜์”ฉ ํ™•์ธ
11+
๋™์ „์ด ์žˆ์œผ๋ฉด(๋น„ํŠธ๊ฐ€ 1์ด๋ฉด) ์ฃผ๋จธ๋‹ˆ(result)์— ๋„ฃ๊ธฐ
12+
๋™์ „์ด ์—†์œผ๋ฉด(๋น„ํŠธ๊ฐ€ 0์ด๋ฉด) ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€๊ธฐ
13+
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€œ
14+
15+
Example 1.์˜ ๊ฒฝ์šฐ
16+
Input: n = 43261596 (์ด์ง„์ˆ˜: 00000010100101000001111010011100)
17+
18+
1๋ฒˆ์งธ ๋ฐ˜๋ณต:
19+
- result = 0 << 1 = 0
20+
- n & 1 = 0 (๋งˆ์ง€๋ง‰ ๋น„ํŠธ๊ฐ€ 0)
21+
- if๋ฌธ ์‹คํ–‰ ์•ˆ ๋จ (result๋Š” ๊ทธ๋Œ€๋กœ 0)
22+
- n = n >> 1 = 0000001010010100000111101001110
23+
24+
2๋ฒˆ์งธ ๋ฐ˜๋ณต:
25+
- result = 0 << 1 = 0
26+
- n & 1 = 0 (๋งˆ์ง€๋ง‰ ๋น„ํŠธ๊ฐ€ 0)
27+
- if๋ฌธ ์‹คํ–‰ ์•ˆ ๋จ (result๋Š” ๊ทธ๋Œ€๋กœ 0)
28+
- n = n >> 1 = 000000101001010000011110100111
29+
30+
3๋ฒˆ์งธ ๋ฐ˜๋ณต:
31+
- result = 0 << 1 = 0
32+
- n & 1 = 1 (๋งˆ์ง€๋ง‰ ๋น„ํŠธ๊ฐ€ 1)
33+
- if๋ฌธ ์‹คํ–‰: result = 0 + 1 = 1
34+
- n = n >> 1 = 00000010100101000001111010011
35+
36+
4๋ฒˆ์งธ ๋ฐ˜๋ณต:
37+
- result = 1 << 1 = 10 (์ด์ง„์ˆ˜)
38+
- n & 1 = 1 (๋งˆ์ง€๋ง‰ ๋น„ํŠธ๊ฐ€ 1)
39+
- if๋ฌธ ์‹คํ–‰: result = 10 + 1 = 11 (์ด์ง„์ˆ˜)
40+
- n = n >> 1 = 0000001010010100000111101001
41+
42+
... (32๋ฒˆ ๋ฐ˜๋ณต)
43+
44+
์ตœ์ข…: result = 00111001011110000010100101000000
45+
Output: 964176192
46+
47+
์‹œ๊ฐ„ ๋ณต์žก๋„: O(1)
48+
ํ•ญ์ƒ ์ •ํ™•ํžˆ 32๋ฒˆ์˜ ๋ฐ˜๋ณต์„ ์ˆ˜ํ–‰
49+
์ž…๋ ฅ ํฌ๊ธฐ์— ๊ด€๊ณ„์—†์ด ์ƒ์ˆ˜ ์‹œ๊ฐ„
50+
51+
๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
52+
๋ช‡ ๊ฐœ์˜ ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ƒ์ˆ˜ ๊ณต๊ฐ„
53+
์ถ”๊ฐ€ ๋ฐฐ์—ด์ด๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
54+
55+
'''
56+
class Solution:
57+
def reverseBits(self, n: int) -> int:
58+
# ๋’ค์ง‘ํžŒ ๋น„ํŠธ๋“ค์„ ์ €์žฅํ•  ๊ฒฐ๊ณผ ๋ณ€์ˆ˜๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
59+
result = 0
60+
61+
# 32๋น„ํŠธ๋ฅผ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด 32๋ฒˆ ๋ฐ˜๋ณต
62+
for i in range(32):
63+
# ๊ฒฐ๊ณผ๋ฅผ ์™ผ์ชฝ์œผ๋กœ 1๋น„ํŠธ ์‹œํ”„ํŠธํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋น„ํŠธ๋ฅผ ๋„ฃ์„ ์ž๋ฆฌ ๋งŒ๋“ค๊ธฐ
64+
# ์˜ˆ: 101 โ†’ 1010 (์˜ค๋ฅธ์ชฝ์— 0์ด ํ•˜๋‚˜ ์ถ”๊ฐ€๋จ)
65+
result = result << 1
66+
67+
# n & 1๋กœ n์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ๋น„ํŠธ๋ฅผ ์ถ”์ถœ
68+
# ๊ทธ ๋น„ํŠธ๊ฐ€ 1์ธ์ง€ ํ™•์ธ
69+
if n & 1 == 1:
70+
# ๋งˆ์ง€๋ง‰ ๋น„ํŠธ๊ฐ€ 1์ด์—ˆ๋‹ค๋ฉด result์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์— 1์„ ์ถ”๊ฐ€
71+
# 0์ด์—ˆ๋‹ค๋ฉด ์•„๋ฌด๊ฒƒ๋„ ์•ˆ ํ•จ (์ž๋™์œผ๋กœ 0์ด ์ถ”๊ฐ€๋œ ์ƒํƒœ)
72+
result = result + 1
73+
74+
# n์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ 1๋น„ํŠธ ์‹œํ”„ํŠธํ•˜์—ฌ ๋‹ค์Œ ๋น„ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ค€๋น„
75+
n = n >> 1
76+
77+
return result
78+
79+
80+

0 commit comments

Comments
ย (0)