Skip to content

Commit ccc6432

Browse files
authored
Merge pull request #2122 from wozlsla/main
[wozlsla] WEEK 03 solutions
2 parents 1f77046 + 74270b0 commit ccc6432

File tree

2 files changed

+68
-16
lines changed

2 files changed

+68
-16
lines changed

โ€Žnumber-of-1-bits/wozlsla.pyโ€Ž

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,40 @@ def hammingWeight(self, n: int) -> int:
4646

4747
sol = Solution()
4848
print(sol.hammingWeight(11))
49+
50+
51+
### 6๊ธฐ ###
52+
from collections import Counter
53+
54+
55+
class Solution:
56+
def hammingWeight(self, n: int) -> int:
57+
58+
binary = []
59+
60+
# ๋ฐ˜๋ณต - ์‹œ์ž‘/์ข…๋ฃŒ ์กฐ๊ฑด
61+
while n != 0:
62+
# n/2์˜ ๋ชซ๊ณผ ๋‚˜๋จธ์ง€ ๋‘˜ ๋‹ค ํ•„์š”
63+
n, remainder = divmod(n, 2)
64+
binary.append(remainder)
65+
66+
return Counter(binary)[1]
67+
68+
69+
# ๋น„ํŠธ ์‹œํ”„ํŠธ(Bit Shift) ์—ฐ์‚ฐ
70+
def hammingWeight_bit(n: int) -> int:
71+
count = 0
72+
73+
while n != 0:
74+
count += n & 1 # 1. n์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ๋น„ํŠธ๊ฐ€ 1์ด๋ฉด ๋”ํ•จ
75+
n >>= 1 # 2. n์˜ ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™ (n์„ 2๋กœ ๋‚˜๋ˆ”)
76+
77+
return count
78+
79+
80+
""" Q. binary๋ฅผ ์„ ์–ธํ•  ๋•Œ list / str ์ค‘ ํšจ์œจ์ ์ธ๊ฒƒ์€?
81+
- list : O(1)
82+
- str
83+
- Python์—์„œ ๋ฌธ์ž์—ด์€ ๋ถˆ๋ณ€(Immutable) ์ž๋ฃŒํ˜•
84+
- ๋ฌธ์ž์—ด์— ๋ฌธ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด ์ „์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๊ธฐ์กด ๋ฌธ์ž์—ด์ด ๋ณต์‚ฌ๋˜์–ด์•ผ ํ•จ O(n^2)
85+
"""

โ€Žvalid-palindrome/wozlsla.pyโ€Ž

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -70,22 +70,6 @@ def isPalindrome(self, s: str) -> bool:
7070
return True
7171

7272

73-
""" ์ „์ฒ˜๋ฆฌ ํ•„์š”ํ•จ
74-
class Solution:
75-
def isPalindrome(self, s: str) -> bool:
76-
77-
chars = re.sub(r'[^a-zA-Z0-9]', '', s).lower()
78-
79-
for i in range(len(chars)//2):
80-
left = chars[i]
81-
right = chars[len(chars) - 1 - i]
82-
83-
if left != right:
84-
return False
85-
86-
return True
87-
"""
88-
8973
""" ์ •๊ทœ์‹
9074
import re
9175
@@ -126,3 +110,34 @@ def isPalindrome(self, s: str) -> bool:
126110
* iterator
127111
๋ฐ์ดํ„ฐ์˜ ์ˆœ์ฐจ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ •์˜ํ•˜๋Š” ๊ฐ์ฒด์ผ ๋ฟ, ๊ทธ ์ž์ฒด๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ด๊ณ  ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋‚˜ ํŠœํ”Œ๊ณผ ๊ฐ™์€ ์ง์ ‘์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ์•„๋‹ˆ๋‹ค.
128112
"""
113+
114+
115+
### 6๊ธฐ ###
116+
import re
117+
118+
class Solution:
119+
def isPalindrome(self, s: str) -> bool:
120+
121+
if len(s) == 0:
122+
return True
123+
124+
# remove non-alphanumeric
125+
result = re.sub(r'[^a-zA-Z0-9]', '', s).lower()
126+
127+
# forward/backward ๋น„๊ต
128+
# ์ •๋ ฌ ์—†์ด ๋น„๊ตํ•˜๋Š” ๊ฒŒ ํšจ์œจ์ ์ผ ๊ฒƒ ๊ฐ™๋‹ค. index
129+
for i in range(len(result)//2):
130+
if result[i] == result[-(i+1)]:
131+
continue
132+
else:
133+
return False
134+
return True
135+
136+
""" Q. ์™œ ๋‹จ์ˆœ ์ธ๋ฑ์Šค ๋น„๊ต๋ณด๋‹ค ๋ณต์‚ฌ๋ณธ์„ ์ƒ์„ฑํ•˜๋Š” ์Šฌ๋ผ์ด์‹ฑ ์†”๋ฃจ์…˜์ด ๋” ๋น ๋ฅธ๊ฐ€?
137+
138+
์ธํ„ฐํ”„๋ฆฌํ„ฐ ์˜ค๋ฒ„ํ—ค๋“œ : for ๋ฃจํ”„, range() ์ƒ์„ฑ, ์กฐ๊ฑด๋ฌธ(if), ์ธ๋ฑ์Šค ๊ณ„์‚ฐ(-(i+1)) ๋“ฑ ๋ชจ๋“  ์ž‘์—…์ด Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ ˆ๋ฒจ์—์„œ ์‹คํ–‰
139+
- ์ธ๋ฑ์‹ฑ ์—ฐ์‚ฐ์€ C๋กœ ๊ตฌํ˜„๋œ ๋‚ด๋ถ€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฌธ์ž์—ด์ด ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์—์„œ ํ•ด๋‹น ์œ„์น˜์˜ ๋ฌธ์ž ๊ฐ’(character)์„ '๊ฐ€์ ธ์˜ด'
140+
- ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก ์ž์ฒด๋ฅผ ํ†ต์งธ๋กœ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋งค๋ฒˆ ๋ฃจํ”„๊ฐ€ ๋Œ ๋•Œ๋งˆ๋‹ค ๋‘ ๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ฐ€์ ธ์™€์„œ ๋น„๊ตํ•˜๋ฉฐ, ์ด ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์ œ์–ดํ•œ๋‹ค -> Python ๋ฃจํ”„์˜ ์˜ค๋ฒ„ํ—ค๋“œ
141+
์Šฌ๋ผ์ด์‹ฑ(C์–ธ์–ด๋กœ ๊ตฌํ˜„) : C ์ฝ”๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ์ง์ ‘ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ „์ฒด ๋ฌธ์ž์—ด์ด ์ผ์น˜ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌ
142+
- ์ •๊ทœ์‹๋„ C๋กœ ๊ตฌํ˜„๋ผ์„œ ๋น ๋ฅธ๊ฑฐ์ž„
143+
"""

0 commit comments

Comments
ย (0)