Compare commits

..

10 Commits

Author SHA1 Message Date
Gyubin-Han
b81a37a484 add: boj/10781.py 2025-07-29 11:48:10 +09:00
Gyubin-Han
dac4da1dd6 add: leetcode/237.py 2025-02-20 15:29:30 +09:00
Gyubin Han
dede0dca01 leetcode 2025-02-19 14:09:55 +09:00
Gyubin
e3c6c8b32a add: swea/21425.py 2024-11-12 17:47:08 +09:00
Gyubin Han
a493536ad8 add: swea/5789.py 2024-05-27 16:37:17 +09:00
Gyubin Han
8533316c30 add: swea/4047.py 2024-05-24 15:07:21 +09:00
Gyubin Han
61ff1028f6 add: swea/3750.py 2024-05-20 16:21:53 +09:00
Gyubin Han
335508c78d add: swea/5356.py 2024-05-20 16:06:15 +09:00
Gyubin Han
50aee26efd add: swea/3499.py 2024-05-20 15:32:17 +09:00
Gyubin Han
f3aed8d1f6 add: swea/3307.py 2024-05-20 13:57:03 +09:00
45 changed files with 689 additions and 0 deletions

11
boj/10781.py Normal file
View File

@@ -0,0 +1,11 @@
n,x=map(int,input().split())
a=list(map(int,input().split()))
r=[]
for i in a:
if i<x:
r.append(i)
for i in r:
print(i,end=" ")

8
leetcode/1.py Normal file
View File

@@ -0,0 +1,8 @@
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
answer=()
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i]+nums[j]==target:
answer=(i,j)
return list(answer)

38
leetcode/101.py Normal file
View File

@@ -0,0 +1,38 @@
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def leftSearch(self,stack:List[TreeNode],now:Optional[TreeNode]):
if now==None:
stack.append(None)
else:
stack.append(now.val)
self.leftSearch(stack,now.left)
self.leftSearch(stack,now.right)
def rightSearch(self,stack:List[TreeNode],now:Optional[TreeNode]) -> bool:
if len(stack)<1:
return False
if now==None:
if not(stack.pop()==now):
return False
return True
elif not self.rightSearch(stack,now.left):
return False
elif not self.rightSearch(stack,now.right):
return False
elif not stack.pop()==now.val:
return False
return True
def isSymmetric(self, root: Optional[TreeNode]) -> bool:
stack=[]
self.leftSearch(stack,root.left)
isSym=self.rightSearch(stack,root.right)
if isSym and len(stack)==0:
return True
else:
return False

13
leetcode/104.py Normal file
View File

@@ -0,0 +1,13 @@
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def depth(self,now:Optional[TreeNode],depth:int):
if now==None:
return depth-1
return max(self.depth(now.left,depth+1),self.depth(now.right,depth+1),depth)
def maxDepth(self, root: Optional[TreeNode]) -> int:
return self.depth(root,1)

11
leetcode/118.py Normal file
View File

@@ -0,0 +1,11 @@
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
arr=[[1]]
for r in range(2,numRows+1):
nr=[1]
for i in range(1,r-1):
nr.append(arr[r-2][i-1]+arr[r-2][i])
nr.append(1)
arr.append(nr)
return arr

9
leetcode/121.py Normal file
View File

@@ -0,0 +1,9 @@
class Solution:
def maxProfit(self, prices: List[int]) -> int:
result=0
mi=prices[0]
for i in range(1,len(prices)):
mi=min(prices[i],mi)
result=max(prices[i]-mi,result)
return result

11
leetcode/125.py Normal file
View File

@@ -0,0 +1,11 @@
import re
class Solution:
def isPalindrome(self, s: str) -> bool:
ns=re.sub(r"[^A-Za-z0-9]","",s).lower()
isPal=True
for i in range(len(ns)//2):
if not ns[i]==ns[-i-1]:
isPal=False
break
return isPal

16
leetcode/13.py Normal file
View File

@@ -0,0 +1,16 @@
class Solution:
def romanToInt(self, s: str) -> int:
sv={'M':1000,'D':500,'C':100,'L':50,'X':10,'V':5,'I':1}
msv={'C':set(['D','M']),'X':set(['L','C']),'I':set(['V','X'])}
r=0
mc=''
for c in s:
r+=sv[c]
if mc in msv and c in msv[mc]:
r-=(sv[mc]*2)
if c in msv:
mc=c
else:
mc=''
return r

15
leetcode/136.py Normal file
View File

@@ -0,0 +1,15 @@
class Solution:
def singleNumber(self, nums: List[int]) -> int:
nums.sort()
last=nums[0]
count=1
for i in range(1,len(nums)):
if not last==nums[i]:
if count==1:
break
last=nums[i]
count=1
else:
count+=1
return last

14
leetcode/14.py Normal file
View File

@@ -0,0 +1,14 @@
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
last=strs[0]
for i in range(1,len(strs)):
if len(last)<1:
break
for j in range(min(len(last),len(strs[i]))):
if not last[j]==strs[i][j]:
last=last[0:j]
break
if len(last)>len(strs[i]):
last=last[0:len(strs[i])]
return last

15
leetcode/141.py Normal file
View File

@@ -0,0 +1,15 @@
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def hasCycle(self, head: Optional[ListNode]) -> bool:
h2=head
while h2 and h2.next:
head=head.next
h2=h2.next.next
if head==h2:
return True
return False

23
leetcode/160.py Normal file
View File

@@ -0,0 +1,23 @@
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:
al=set()
r=None
a=headA
b=headB
while a:
al.add(a)
a=a.next
while b:
if b in al:
r=b
break
b=b.next
return r

16
leetcode/169.py Normal file
View File

@@ -0,0 +1,16 @@
class Solution:
def majorityElement(self, nums: List[int]) -> int:
nums.sort()
print(nums)
last=(nums[0],1)
mx=last
for i in range(1,len(nums)):
if nums[i]==last[0]:
last=(last[0],last[1]+1)
else:
last=(nums[i],1)
if mx[1]<last[1]:
mx=last
return mx[0]

11
leetcode/171.py Normal file
View File

@@ -0,0 +1,11 @@
class Solution:
def titleToNumber(self, columnTitle: str) -> int:
dnum={}
for i in range(26):
dnum[chr(ord('A')+i)]=i+1
result=0
for i in range(1,len(columnTitle)+1):
c=columnTitle[-i]
result+=dnum[c]*(26**(i-1))
return result

11
leetcode/190.py Normal file
View File

@@ -0,0 +1,11 @@
class Solution:
def reverseBits(self, n: int) -> int:
r=""
b=bin(n)
for i in range(1,32+1):
if i>len(b)-2:
r+="0"
else:
r+=b[-i]
return int(r,2)

9
leetcode/191.py Normal file
View File

@@ -0,0 +1,9 @@
class Solution:
def hammingWeight(self, n: int) -> int:
count=0
b=bin(n)
for i in range(2,len(b)):
if b[i]=="1":
count+=1
return count

26
leetcode/2.py Normal file
View File

@@ -0,0 +1,26 @@
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
v1=""
v2=""
while not l1==None:
v1=str(l1.val)+v1
l1=l1.next
while not l2==None:
v2=str(l2.val)+v2
l2=l2.next
vr=str(int(v1)+int(v2))
r=ListNode()
now=r
for i in range(1,len(vr)+1):
now.val=vr[-i]
if i<len(vr):
now.next=ListNode()
now=now.next
return r

21
leetcode/20.py Normal file
View File

@@ -0,0 +1,21 @@
class Solution:
def isValid(self, s: str) -> bool:
arr=[]
for c in s:
if c in ['(','{','[']:
arr.append(c)
continue
if c in [')','}',']']:
if len(arr)<0+1:
return False
p=arr.pop()
if not((c==')' and p=='(') or (c=='}' and p=='{') or (c==']' and p=='[')):
return False
if len(arr)>0:
return False
else:
return True

13
leetcode/202.py Normal file
View File

@@ -0,0 +1,13 @@
class Solution:
def isHappy(self, n: int) -> bool:
s=str(n)
while not len(s)==1:
r=0
for i in range(len(s)):
r+=int(s[i])**2
s=str(r)
if s=="1" or s=="7":
return True
else:
return False

19
leetcode/206.py Normal file
View File

@@ -0,0 +1,19 @@
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
l=[]
while not head==None:
n=ListNode(head.val)
l.append(n)
head=head.next
r=ListNode()
rt=r
while len(l)>0:
rt.next=l.pop()
rt=rt.next
return r.next

37
leetcode/21.py Normal file
View File

@@ -0,0 +1,37 @@
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
result=ListNode()
re=result
li1=list1
li2=list2
while not li1==None and not li2==None:
n=ListNode()
if li1.val<li2.val:
n.val=li1.val
li1=li1.next
else:
n.val=li2.val
li2=li2.next
re.next=n
re=re.next
while not li1==None:
n=ListNode()
n.val=li1.val
re.next=n
re=re.next
li1=li1.next
while not li2==None:
n=ListNode()
n.val=li2.val
re.next=n
re=re.next
li2=li2.next
return result.next

11
leetcode/217.py Normal file
View File

@@ -0,0 +1,11 @@
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
l=set()
isDu=False
for i in nums:
if i in l:
isDu=True
break
else:
l.add(i)
return isDu

16
leetcode/234.py Normal file
View File

@@ -0,0 +1,16 @@
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def isPalindrome(self, head: Optional[ListNode]) -> bool:
l=[]
while not head==None:
l.append(head.val)
head=head.next
for i in range(len(l)//2):
if not l[i]==l[-i-1]:
return False
return True

14
leetcode/237.py Normal file
View File

@@ -0,0 +1,14 @@
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def deleteNode(self, node):
"""
:type node: ListNode
:rtype: void Do not return anything, modify node in-place instead.
"""
node.val=node.next.val
node.next=node.next.next

21
leetcode/242.py Normal file
View File

@@ -0,0 +1,21 @@
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
d={}
if not len(s)==len(t):
return False
for i in s:
if i in d:
d[i]+=1
else:
d[i]=1
for i in t:
if i in d:
d[i]-=1
else:
return False
for i in d.keys():
if not d[i]==0:
return False
return True

8
leetcode/26.py Normal file
View File

@@ -0,0 +1,8 @@
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
arr=sorted(list(set(nums)))
count=len(arr)
for i in range(count):
nums[i]=arr[i]
return count

11
leetcode/268.py Normal file
View File

@@ -0,0 +1,11 @@
class Solution:
def missingNumber(self, nums: List[int]) -> int:
last=-1
nums.sort()
for i in range(len(nums)):
if not last+1==nums[i]:
break
else:
last+=1
return last+1

3
leetcode/28.py Normal file
View File

@@ -0,0 +1,3 @@
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
return haystack.find(needle)

17
leetcode/283.py Normal file
View File

@@ -0,0 +1,17 @@
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
s=0
z=0
for i in range(len(nums)):
v=nums[i]
if v==0:
z+=1
else:
nums[s]=v
s+=1
for i in range(1,z+1):
nums[-i]=0

9
leetcode/326.py Normal file
View File

@@ -0,0 +1,9 @@
class Solution:
def isPowerOfThree(self, n: int) -> bool:
last=1
while last<n:
last*=3
if last==n:
return True
else:
return False

7
leetcode/344.py Normal file
View File

@@ -0,0 +1,7 @@
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
for i in range(len(s)//2):
s[i],s[-i-1]=s[-i-1],s[i]

15
leetcode/350.py Normal file
View File

@@ -0,0 +1,15 @@
class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
result=[]
check={}
for i in nums1:
if i in check:
check[i]+=1
else:
check[i]=1
for i in nums2:
if i in check and check[i]>0:
check[i]-=1
result.append(i)
return result

15
leetcode/387.py Normal file
View File

@@ -0,0 +1,15 @@
class Solution:
def firstUniqChar(self, s: str) -> int:
d={}
for i in range(len(s)):
if s[i] in d:
d[s[i]]=-1
else:
d[s[i]]=i
for i in d.values():
if i>-1:
return i
return -1

13
leetcode/412.py Normal file
View File

@@ -0,0 +1,13 @@
class Solution:
def fizzBuzz(self, n: int) -> List[str]:
result=[]
for i in range(1,n+1):
s=""
if i%3==0:
s+="Fizz"
if i%5==0:
s+="Buzz"
if s=="":
s=str(i)
result.append(s)
return result

21
leetcode/66.py Normal file
View File

@@ -0,0 +1,21 @@
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
arr=[]
isUp=False
digits[-1]+=1
for i in range(1,len(digits)+1):
if isUp:
digits[-i]+=1
isUp=False
if digits[-i]>9:
isUp=True
digits[-i]=0
if isUp:
arr.append(1)
for i in digits:
arr.append(i)
return arr

8
leetcode/70.py Normal file
View File

@@ -0,0 +1,8 @@
class Solution:
def climbStairs(self, n: int) -> int:
dp=[0,1,2]
for i in range(3,n+1):
dp.append(dp[i-2]+dp[i-1])
return dp[n]

24
leetcode/88.py Normal file
View File

@@ -0,0 +1,24 @@
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
narr=[]
cnt1=0
cnt2=0
while cnt1<m and cnt2<n:
v=0
if nums1[cnt1]<nums2[cnt2]:
v=nums1[cnt1]
cnt1+=1
else:
v=nums2[cnt2]
cnt2+=1
narr.append(v)
while cnt1<m:
narr.append(nums1[cnt1])
cnt1+=1
while cnt2<n:
narr.append(nums2[cnt2])
cnt2+=1
for i in range(n+m):
nums1[i]=narr[i]

20
leetcode/94.py Normal file
View File

@@ -0,0 +1,20 @@
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def inorder(self, now: Optional[TreeNode], result: List[int]):
if not now.left==None:
self.inorder(now.left,result)
result.append(now.val)
if not now.right==None:
self.inorder(now.right,result)
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
result=[]
if not root==None:
self.inorder(root,result)
return result

14
swea/21425.py Normal file
View File

@@ -0,0 +1,14 @@
t=int(input())
for _ in range(t):
count=0
x,y,n=map(int,input().split())
while(x<=n and y<=n):
count+=1
if(x<y):
x+=y
else:
y+=x
print(count)

13
swea/3307.py Normal file
View File

@@ -0,0 +1,13 @@
t=int(input())
for tc in range(1,t+1):
n=int(input())
arr=list(map(int,input().split()))
dp=[1]*n
mx=0
for i in range(1,n):
for j in range(i):
if arr[i]>arr[j]:
dp[i]=max(dp[i],dp[j]+1)
mx=max(dp[i],mx)
print("#"+str(tc),mx)

16
swea/3499.py Normal file
View File

@@ -0,0 +1,16 @@
t=int(input())
for tc in range(1,t+1):
n=int(input())
arr=list(map(str,input().split()))
narr=[]
si=n//2
for i in range(si):
narr.append(arr[i])
if n%2==1:
narr.append(arr[si+i+1])
else:
narr.append(arr[si+i])
if n%2==1:
narr.append(arr[si])
print("#"+str(tc),*narr)

14
swea/3750.py Normal file
View File

@@ -0,0 +1,14 @@
t=int(input())
pr=[]
for tc in range(1,t+1):
n=input()
while len(n)>1:
r=0
for c in n:
v=int(c)
r+=v
n=str(r)
pr.append("#{} {}".format(tc,n))
for p in pr:
print(p)

24
swea/4047.py Normal file
View File

@@ -0,0 +1,24 @@
t=int(input())
for tc in range(1,t+1):
isCo=True
c=set()
d={}
p=input()
pl=len(p)//3
for i in range(pl):
v=p[i*3:i*3+3]
if v in c:
isCo=False
break
c.add(v)
d[v[0]]=d.get(v[0],0)+1
if not isCo:
print("#"+str(tc),"ERROR")
continue
cs=13-d.get('S',0)
cd=13-d.get('D',0)
ch=13-d.get('H',0)
cc=13-d.get('C',0)
print("#"+str(tc),cs,cd,ch,cc)

13
swea/5356.py Normal file
View File

@@ -0,0 +1,13 @@
t=int(input())
for tc in range(1,t+1):
arr=[]
s=""
mx=0
for i in range(5):
arr.append(list(input()))
mx=max(len(arr[-1]),mx)
for i in range(mx):
for j in range(5):
if len(arr[j])>i:
s+=arr[j][i]
print("#"+str(tc),s)

15
swea/5789.py Normal file
View File

@@ -0,0 +1,15 @@
t=int(input())
for tc in range(1,t+1):
n,q=map(int,input().split())
d={}
for i in range(1,n+1):
d[i]=0
for i in range(q):
s,e=map(int,input().split())
for j in range(s,e+1):
d[j]=i+1
rs="#"+str(tc)+" "
for i in range(1,n+1):
rs+=str(d[i])+" "
print(rs)