코딩테스트 12

프로그래머스 신고 결과 받기(파이썬 풀이)

프로그래머스에서 레벨1로 풀 수 있는 문제. 2022 kakao 블라인드 문제1번문제같은데 처음엔 막막했다. 다만 split()함수 잘 이용하면 크게 어렵진 않은 것 같다 def solution(id_list, report, k): report = set(list(report)) #report의 중복 없애줌 a= [] b=[] c=[] reported = [x.split()[1] for x in report] #리폿 당한 애들 for i,v in enumerate(id_list): if reported.count(v)>=k: #k번 이상 리폿 당했으면 a.append(v) #리폿 당한 사람이름 a에 저장 rar = [x.split() for x in report] #리폿한 사람과 당한 사람 for i i..

Leetcode 1108 풀이(파이썬, 스위프트)

스위프트는 replacingOccurrences 메소드, 파이썬은 replace 메소드를 사용할 줄 아는지 묻는 문제. 물론 풀이는 다양할 수 있다. 스위프트: class Solution { func defangIPaddr(_ address: String) -> String { var a = address a = a.replacingOccurrences(of: ".", with: "[.]") return a } } 파이썬: class Solution: def defangIPaddr(self, address: str) -> str: address=address.replace(".","[.]") return address

리트코드 풀이 2022.02.05

Leetcode 2114 풀이(파이썬, 스위프트)

단어의 개수가 가장 많은 인덱스를 고르는 문제이다 for문 연습하기 좋은 문제 스위프트 class Solution { func mostWordsFound(_ sentences: [String]) -> Int { var x = 0 for i in sentences{ x = max(x, numberOfWords(i)) } return x } func numberOfWords(_ s: String) -> Int { var w = 1 for i in s where i == " "{ w+=1 } return w } } 파이썬 class Solution: def mostWordsFound(self, sentences: List[str]) -> int: x=0 for i in range(len(sentences)):..

리트코드 풀이 2022.02.04

Leetcode 1480 풀이(파이썬, 스위프트)

어떤 인덱스에 대하여 0부터 그 인덱스까지의 모든 배열인덱스의 값들의 합을 인덱스에 저장하는 것이다. 스위프트 class Solution { func runningSum(_ nums: [Int]) -> [Int] { var n=nums for i in 0...(n.count-2){ n[i+1] = n[i]+n[i+1] } return n } } 파이썬 class Solution: def runningSum(self, nums: List[int]) -> List[int]: for i in range(len(nums)): if i ==0: continue nums[i]=nums[i]+ nums[i-1] return nums

리트코드 풀이 2022.02.03

Leetcode 1929 풀이(파이썬, 스위프트)

단순히 배열을 두배로 늘려주는 문제. 지금보니 젤 쉬운문제.. 파이썬 class Solution: def getConcatenation(self, nums: List[int]) -> List[int]: return nums+nums #nums*2 스위프트 class Solution { func getConcatenation(_ nums: [Int]) -> [Int] { var a = nums //let으로 선언된 nums는 수정불가 하기 때문에 a라는 배열에 담음 return a+a //a*2는 스위프트에서 지원 안함 } }

리트코드 풀이 2022.02.03

Leetcode 1920번 풀이(파이썬, swift)

인덱스의 값을 배열에 한번더 참조한 값을 정답 배열에 집어넣으면 된다 젤 쉬운문제 파이썬 class Solution: def buildArray(self, nums: List[int]) -> List[int]: ans=[] for i in range(len(nums)): ans.append(nums[nums[i]]) return ans swift class Solution { func buildArray(_ nums: [Int]) -> [Int] { var a = [Int]() for (i,v) in nums.enumerated(){ a.append(nums[nums[nums.index(nums.startIndex, offsetBy:i)]]) } return a } }

리트코드 풀이 2022.02.03

백준 2839 풀이

n=int(input()) d= [5001]*5001 a=[3,5] d[0]=0 for i in range(2): for j in range(a[i],n+1): d[j]=min(d[j],d[j-a[i]]+1) if d[n]!=5001: print(d[n]) else: print(-1) dp의 가장 기초적인 문제이자 그리디가 섞인 문제이다. dp배열을 n의 최대범위 5000에다가 1을 더한 5001로 5001개 생성한다. (최소값을 구하기 위한 5001과 최대 n이 5000일 수 있으니) 2번 for문을 돌린건 3,5 짜리 화폐 2개 일 경우들을 나타낸 것이고 그 안에 이중 포문은 어짜피 a[i]보다 작으면 나눠 떨어지지 않으므로 a[i]에서 n까지 범위를 설정해 준다. 포문안에 내용은 점화식을 그대로 표..

백준 풀이 2022.02.01