|
| 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