two_sumํจ์์ ์ซ์ ๋ฆฌ์คํธ์ 'ํน์ ์'๋ฅผ ์ธ์๋ก ๋๊ธฐ๋ฉด, ๋ํด์ 'ํน์ ์'๊ฐ ๋์ค๋ index๋ฅผ ๋ฐฐ์ด์ ๋ด์ returnํด ์ฃผ์ธ์.
nums: ์ซ์ ๋ฐฐ์ด
target: ๋ ์๋ฅผ ๋ํด์ ๋์ฌ ์ ์๋ ํฉ๊ณ
return: ๋ ์์ index๋ฅผ ๊ฐ์ง ์ซ์ ๋ฐฐ์ด์๋ฅผ๋ค์ด,
nums์ [4, 9, 11, 14]
target์ 13
nums[0] + nums[1] = 4 + 9 = 13 ์ด์ฃ ?
๊ทธ๋ฌ๋ฉด [0, 1]์ด return ๋์ด์ผ ํฉ๋๋ค.target์ผ๋ก ๋ณด๋ด๋ ํฉ๊ณ์ ์กฐํฉ์ ๋ฐฐ์ด ์ ์ฒด ์ค์ 2๊ฐ ๋ฐ์ ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
def two_sum(nums, target):
answer = []
for i in nums:
for j in nums:
if i + j == target:
answer.append(nums.index(i))
answer.append(nums.index(j))
return sorted(list(set(answer)))
์ด์คfor๋ฌธ์ ํตํด nums ์์๋ค์ ์๋ก ๋ํด์ฃผ๋ case๋ฅผ ๋ง๋ค๊ณ if๋ฌธ์ ํตํด target๊ณผ ์ผ์นํ๋์ง๋ฅผ ํ์ธํ๋ค. ์ผ์นํ ๊ฒฝ์ฐ ๊ฐ๊ฐ์ ์์๋ค์ index๋ฅผ answer ๋ฆฌ์คํธ์ append
ํด์ฃผ์๋ค.
reverse ํจ์์ ์ ์์ธ ์ซ์๋ฅผ ์ธ์๋ก ๋ฐ์ต๋๋ค.
๊ทธ ์ซ์๋ฅผ ๋ค์ง์ด์ returnํด์ฃผ์ธ์.x: ์ซ์
return: ๋ค์ง์ด์ง ์ซ์๋ฅผ ๋ฐํ!์๋ค ๋ค์ด,
x: 1234
return: 4321
x: -1234
return: -4321
x: 1230
return: 321
def reverse(number):
if number > 0 :
a = str(number)[::-1]
return int(a)
elif number < 0 :
a = str(number)[1:]
b = a[::-1]
return int(b) * -1
else :
return 0
input๋ number ๊ฐ์ ๋ค์ง๋๊ฑด ์ฌ๋ผ์ด์ฑ์ ์ฌ์ฉํ์๋ค. ๋ค๋ง number๊ฐ ์์์ผ ๊ฒฝ์ฐ์๋ index=0 ์์๋ถํฐ ๋๊น์ง ๋ค์ง์ ํ intํ์ผ๋ก ๋ฐ๋ก returnํ์๊ณ , ์์์ผ ๊ฒฝ์ฐ์๋ index=1 ์์์ ์์๋ถํฐ ๋ค์ง์๋ค. index=0 ์ธ ์์๋ถํฐ ๋ค์ง์ ๊ฒฝ์ฐ '-' ๋ถํธ๋ ๋ค๋ก ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ง์ง๋ง์ -1์ ๊ณฑํด์ฃผ๋ฉด ๋ค์ ์์ '-'๋ถํธ๊ฐ ์๊ธด๋ค.
String ํ์ธ str ์ธ์์์ ์ค๋ณต๋์ง ์์ ์ํ๋ฒณ์ผ๋ก ์ด๋ฃจ์ด์ง ์ ์ผ ๊ธด ๋จ์ด์ ๊ธธ์ด๋ฅผ ๋ฐํํด์ฃผ์ธ์.
ex)
str: ํ ์คํธ
return: ์ค๋ณต๋์ง ์์ ์ํ๋ฒณ ๊ธธ์ด (์ซ์ ๋ฐํ)str = "abcabcabc"
return ์ 3
=> 'abc' ๊ฐ ์ ์ผ ๊ธธ๊ธฐ ๋๋ฌธstr = "aaaaa"
return ์ 1
=> 'a' ๊ฐ ์ ์ผ ๊ธธ๊ธฐ ๋๋ฌธstr = "sttrg"
return ์ 3
=> 'trg' ๊ฐ ์ ์ผ ๊ธธ๊ธฐ ๋๋ฌธ
def get_len_of_str(s):
results = ''
s_len = 0
for i in range(len(s)):
if s[i] in results:
results = s[i]
elif s[i] not in results:
results += s[i]
if len(results) > s_len:
s_len = len(results)
return s_len
์ด ๋ฌธ์ ์ ์ฒซ๋ฒ์งธ key point๋ input ๊ฐ s๋ฅผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์์ i๋ฅผ ๋น์ด์๋ ๋ฌธ์์ด ๋ณ์ results ๊ฐ์ ๋ฃ์ด์ฃผ๋, ๋์ผํ i ๊ฐ์ด ์ด๋ฏธ results์ ์์ผ๋ฉด results ์ด๊ธฐํ(results = s[i]
)ํ๊ณ ์์ผ๋ฉด ์์ ์ถ๊ฐ(results += s[i]
) ํ๋ ๊ฒ์ด๋ค.
๋๋ฒ์งธ key point๋ results์ ๊ธธ์ด๊ฐ s_len ๊ฐ๋ณด๋ค ํฌ๋ฉด s_len์ results์ ๊ธธ์ด๋ฅผ ํ ๋นํด์ฃผ๋ ๊ฒ์ด๋ค. ์ด๋ ๋ฌธ์ ์์ ์๊ตฌํ๋ ์ค๋ณต๋์ง ์๋ ์ ์ผ ๊ธด ๋จ์ด์ ๊ธธ์ด๋ฅผ s_len ๋ณ์๋ฅผ ํตํด ์ ์ ์๊ฒ ํด์ค๋ค. ์ฝ๊ฒ ๋งํด์ results์ ๊ธธ์ด๊ฐ ์ต๊ณ ๊ธฐ๋ก์ ๊ฒฝ์ ํ์ ๋ s_len ๊ฐ์ด ๋ณํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ซ์์ธ num์ ์ธ์๋ก ๋๊ฒจ์ฃผ๋ฉด, ๋ค์ง์ ๋ชจ์์ด num๊ณผ ๋๊ฐ์์ง ์ฌ๋ถ๋ฅผ ๋ฐํํด์ฃผ์ธ์.
num: ์ซ์
return: true or false (๋ค์ง์ ๋ชจ์์ด num์ ๋๊ฐ์์ง ์ฌ๋ถ)num = 123
return false
=> ๋ค์ง์ ๋ชจ์์ด 321 ์ด๊ธฐ ๋๋ฌธ
num = 1221
return true
=> ๋ค์ง์ ๋ชจ์์ด 1221 ์ด๊ธฐ ๋๋ฌธ
num = -121
return false
=> ๋ค์ง์ ๋ชจ์์ด 121- ์ด๊ธฐ ๋๋ฌธ
num = 10
return false
=> ๋ค์ง์ ๋ชจ์์ด 01 ์ด๊ธฐ ๋๋ฌธ
def same_reverse(num):
if num < 0:
return False
num2 = list(str(num))
num2.reverse()
num2 = "".join(num2)
if num == int(num2):
return True
else:
return False
num๊ฐ์ผ๋ก ์์๊ฐ์ด input ๋๋ฉด ๋ฌด์กฐ๊ฑด False์ด๊ธฐ ๋๋ฌธ์ if๋ฌธ์ผ๋ก ์กฐ๊ฑด์ ๊ฑธ์ด๋๊ณ ์์ํ์๋ค. num๊ฐ์ผ๋ก intํ์
์ด input๋๊ธฐ ๋๋ฌธ์ strint ํ์
์ ๋ฆฌ์คํธ๋ก ๋ณํํ ํ reverse()
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฅผ ๋ค์ง๊ณ join()
ํจ์๋ก ๋ค์ ํ๋์ ์์๋ก ํฉ์ณ์ฃผ์๋ค.
strs์ ๋จ์ด๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ ๋๋ค.
๊ณตํต๋ ์์ ๋จ์ด(prefix)๋ฅผ ๋ฐํํด์ฃผ์ธ์.์๋ฅผ ๋ค์ด,
strs = ['start', 'stair', 'step']
return์ 'st'strs = ['start', 'wework', 'today']
return์ ''
#1์ฐจ๋ต์(์ค๋ต)
def get_prefix(strs):
if not strs:
return ''
short_word = min(strs, key=len)
answer = ''
for i, j in enumerate(short_word):
for word in strs:
if short_word == word:
return short_word
elif word[i] != j:
answer += short_word[:i]
return answer
#2์ฐจ๋ต์(์ ๋ต)
def get_prefix(strs):
if not strs:
return ''
short_word = min(strs, key=len)
answer = ''
for i, j in enumerate(short_word):
for word in strs:
if word[i] != j:
return answer
answer += j
return answer
# ๋ค๋ฅธ ์ฌ๋์ ํ์ด
def get_prefix(strs):
if len(strs) == 0:
return ''
res = ''
strs = sorted(strs)
for i in strs[0]:
if strs[-1].startswith(res+i):
res += i
else:
break
return res