๋จ ํ๋ฌธ์ ๋ ์ฝ์ง ์์๋ค๊ณ ํ๋ค.....๐จ
๊ทธ๋ฆฌ๊ณ ์ ๋ฌธ์ ๋ฅผ ์ดํด๋ฅผ ์ ๋ชปํ๋๊ฑธ๊น? ์ข๋ ๋ฌธ์ ๋ฅผ ์ง๊ด์ ์ผ๋ก ๋ด์ผํ ๋ฏ
<๋ฌธ์ >
๋ก๋ง์์์ ์ซ์๋ก ๋ฐ๊พธ๊ธฐ 1~3999 ์ฌ์ด์ ๋ก๋ง์ s๋ฅผ ์ธ์๋ก ์ฃผ๋ฉด ๊ทธ์ ํด๋นํ๋ ์ซ์๋ฅผ ๋ฐํํด์ฃผ์ธ์.
๋ก๋ง ์ซ์๋ฅผ ์ซ์๋ก ํ๊ธฐํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Symbol | Value |
---|---|
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
๋ก๋ง์๋ฅผ ์ซ์๋ก ์ฝ๋ ๋ฐฉ๋ฒ์ ๋ก๋ง์๋ฅผ ์ผ์ชฝ๋ถํฐ ์ฐจ๋ก๋๋ก ๋ํ๋ฉด ๋ฉ๋๋ค.
III = 3
XII = 12
XXVII = 27์ ๋๋ค.
๊ทธ๋ฐ๋ฐ 4๋ฅผ ํํํ ๋๋ IIII๊ฐ ์๋๋ผ IV ์ ๋๋ค.
๋ค์ ์ซ์์์ ์์ ์ซ์๋ฅผ ๋นผ์ฃผ๋ฉด ๋ฉ๋๋ค.
9๋ IX์ ๋๋ค.
I๋ V์ X์์ ์์ 4, 9
X๋ L, C์์ ์์ 40, 90
C๋ D, M์์ ์์ 400, 900
๋๋ ์ฒ์์ ์์ํ ๋ ๊ฐ ์ซ์,๋ก๋ง์๋ฅผ ๋์
๋๋ฆฌ์ ๋ฃ์๋ ์๊ฐ์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ์๋ฐ 4,9,40,90,400,900์ ๊ฒฝ์ฐ๋ ๋ฃ์๋ค ๋ณ์๋ก ๋ค์ด์ฌ ๋ก๋ง๋ฌธ์๋ฅผ ๋น๊ตํด์ฃผ์๊ณ ์๊ฐํ๋ค.
๊ทธ๋ฐ๋ฐ ์ดํ ์ด๋ป๊ฒ ์ ๊ทผ์ ํด์ผํ ์ง๊ฐ ๋๋ฌด ๋ง๋งํด์ ๊ฒฐ๊ตญ ๊ฐ์ด ํ๋ ๋ฏผ์ฒ ๋์ ์์งํ๊ฒ ๋์๊ณ ..
๋ฏผ์ฒ ๋์ ํ๋์บ๋ฆฌ๋ฅผ ํด์ฃผ์
จ๋ค...ใ
def roman_to_num(string):
# ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ธ์.
a=[โ4โ,โ9โ,โ40โ,โ90โ,โ400โ,โ900โ]
r=[โIVโ,โIXโ,โXLโ,โXCโ,โCDโ,โCMโ]
b = [โ1โ,โ5โ,โ10โ,โ50โ,โ100โ,โ500โ,โ1000โ]
o = [โIโ,โVโ,โXโ,โLโ,โCโ,โDโ,โMโ]
new=[]
for i in range(len(a)):
if r[i] in string:
string=string.replace(r[i],a[i])
new.append(a[i])
for i in range(len(string)):
if s[i] in o:
index=o.index(string[i])
new.append(b[index])
answer = 0
for i in new:
answer += int(i)
return answer
๋จผ์ 4,9์ ์์ธ์ ์ธ ๊ฒฝ์ฐ๊ฐ ์๋์ง ํ์ธํ ์ด๋ฅผ ์ซ์๋ก ๋ฐ๊ฟ์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๋๋จธ์ง ๊ฒฝ์ฐ์ ๋ง์ถฐ for ๋ฌธ์ ํตํด ์ ์ฉํด์ฃผ์๋ค.
def roman_to_num(s):
"""
:type s: str
:rtype: int
"""
L = []
sum = 0
d = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
for i in s[::-1]:
if L:
if i=='I' and L[-1] in ['V','X']:
sum -= 1
L.pop()
elif i=='X' and L[-1] in ['L','C']:
sum -= 10
L.pop()
elif i=='C' and L[-1] in ['D','M']:
sum -= 100
L.pop()
else:
sum += d[i]
L.append(i)
else:
sum +=d[i]
L.append(i)
return sum
๋์
๋๋ฆฌ๋ก ๋จผ์ ์๋ค์ ๋ฃ์ด์ฃผ๊ณ 4,9๊ฐ ๋์ค๊ฒ ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ๋ถ๋ค ํด์ฃผ๋ ์๋ฃจ์
์ด์๋ค.
ํ .. ์ด์ชฝ์ด ์ข๋ ๋นจ๋ฆฌ ์ฐ์ฐ์ด ๊ฐ๋ฅํ ๊ฑฐ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค๊ธด ๋ ๋ค..
(๋ฌผ๋ก ์์ด ๊ธธ์ด์ก์ง๋ง?)
<๋ฌธ์ >
์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ธ nums๋ฅผ ์ธ์๋ก ์ ๋ฌํฉ๋๋ค.
์ซ์์ค์์ ๊ณผ๋ฐ์(majority, more than a half)๊ฐ ๋์ ์ซ์๋ฅผ ๋ฐํํด์ฃผ์ธ์.
(๊ฐ์ : nums ๋ฐฐ์ด์ ๊ธธ์ด๋ ๋ฌด์กฐ๊ฑด 2๊ฐ ์ด์)์๋ฅผ ๋ค์ด,
nums = [3,2,3] -> return 3
nums = [2,2,1,1,1,2,2] -> return 2
์ค๋์ ์ฝ๋์นดํ๋ ์ฃผํ๋! ๋ญ๊ฐ ๋ด๊ฐ ๊ฐ์ด ํ๋๋ถ๋ค์ด ์ญ ์ํ์๋ ๋ถ๋ค์ด๋ผ์ ๋ญ๊ฐ ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํ์ ์์๋ค.
(๋ฌผ๋ก ๋๋!! ์๊ฐ์ ํ์ง๋ง ๋ญ๊ฐ ๋จ๊ธฐ๊ฐ์ ํ์ด๋ด๋๊ฒ ์์ง ๋ฏธ์ํ๊ฑฐ๊ฐ๋ค ใ
ใ
)
๊ณผ๋ฐ์๋ผ๊ณ ํ์ผ๋ ๋จผ์ ๊ณผ๋ฐ์๊ฐ ๋ช๊ฐ์ธ์ง๋ฅผ //
๋ฅผ ํตํด ์์๋ธ๋ค
countํจ์๋ฅผ ์ด์ฉํด์ ๊ณผ๋ฐ์๊ฐ ๋๋ ์ซ์๋ฅผ ๋ฝ์๋ด์๋ ์๊ฐ์ผ๋ก ์ ๊ทผํ๋ค.
def more_than_half(nums):
half_nums = len(nums) // 2
set_list = set(nums)
for i in set_list:
if nums.count(i) >= half_nums:
return i
def more_than_half(nums):
majority_count = len(nums)//2
for num in nums:
count = sum(1 for elem in nums if elem == num)
if count > majority_count:
return num
์ค์ค ์ ๊ทผ๋ฒ์ด ๋น์ทํ๋ค!
์ด๋ฒ์๋ ์๋ฃจ์
๋ณด๋ค ์ฐ๋ฆฌ๊ฐ ํ๊ฒ ์๊ฐ์ด ๋๋๋๊ฑฐ ๊ฐ์๋ฐ.. ๊ธฐ๋ถํ์ธ๊ฐ๐ค