코테 22

프로그래머스 키패드 누르기(파이썬)

좌표로 번호판을 생각한다는게 어려웠다. 무엇보다 꼼꼼히 구현을 해야하는 문제 def solution(numbers, hand): answer = '' dic = {1: [0,0], 2:[0,1], 3:[0,2], 4:[1,0], 5:[1,1], 6:[1,2],7:[2,0],8:[2,1],9:[2,2],\ '*':[3,0],0:[3,1],'#':[3,2]} #좌표별로 나누기 left_n = dic['*'] #왼손 시작 right_n = dic['#'] #오른손 시작 for i in numbers: now = dic[i] #가고자 하는 위치 if i ==1 or i==4 or i == 7: answer+='L' left_n =now #무조건 왼손 elif i ==3 or i == 6 or i == 9: an..

프로그래머스 신규아이디 추천(파이썬)

카카오 2021 블라인드 문제로 나왔었다. 그냥 시키는 대로 구현하면 되는 쉬운 문제지만 꼼꼼하게 하지 않으면 인덱스 오류같은 오류가 난다. 자세한건 주석으로 설명했다. def solution(new_id): answer = '' new_id=new_id.lower() #소문자로 # print(new_id) for i in range(len(new_id)): #특정문자 외 제거 if new_id[i].isalpha() or new_id[i].isdigit() or new_id[i] in ["-", "_", "."]: answer+=new_id[i] # print(answer) while ".." in answer: # .. 를 .로 answer = answer.replace("..",".") if ans..

프로그래머스 체육복(파이썬)

이 문제의 경우 풀이는 매우 간단하나 딱 풀이를 떠올려서 구현하기가 너무 힘들다. 그리고 왼쪽에 있는 학생한테 먼저 빌려줘야 하는것도 키포인트 def solution(n, lost, reserve): a= set(lost)-set(reserve) b= set(reserve)-set(lost) #lost와 reserve 중복제거 for i in b: #체육복을 빌려줄 수 있을 때 if i-1 in a: #그 전 번호부터 확인해 봐야한다. 빌려줄 수 있을 때. a.remove(i-1) elif i+1 in a: #그 다음 번호한테 빌려줄 수 있을 때 a.remove(i+1) return n-len(a)

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

프로그래머스에서 레벨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 2006 풀이(파이썬, 스위프트)

for문을 전체 길이-1 까지 돌리고 그 안에 2중 for문으로 i+1부터 전체길이까지 두 값의 차이가 k인 것들의 개수를 +해준다. 파이썬: class Solution: def countKDifference(self, nums: List[int], k: int) -> int: cnt = 0 for i in range(len(nums)-1): for j in range(i+1, len(nums)): if abs(nums[i]-nums[j])==k: # 차이의 절대값이 k일때 cnt+=1 # cnt 1증가 return cnt 스위프트: class Solution { func countKDifference(_ nums: [Int], _ k: Int) -> Int { var cnt = 0 for i in 0..

카테고리 없음 2022.02.07

leetcode 1281 풀이(파이썬, 스위프트)

모르는게 많아서 블로그에 많은걸 포스팅하게 된 문제... map과 reduce에 익숙해지자... (파이썬으론 익숙해서 쉽다 파이썬짱) 숫자를 이루는 숫자들을 다뤄야하기 때문에 숫자를 그 숫자를 이루는 숫자들의 배열로 만들었고 for문으로 모두 곱한것에서 더한것을 빼줬다. 스위프트: class Solution { func subtractProductAndSum(_ n: Int) -> Int { var a = String(n).map{Int(String($0))!} return a.reduce(1){$0*$1} - a.reduce(0){$0+$1} } } 파이썬: class Solution: def subtractProductAndSum(self, n: int) -> int: n=[x for x in str..

리트코드 풀이 2022.02.07

리트코드 771 풀이(파이썬, 스위프트)

stones문자열에 있는 문자가 jewel에 있으면 만들어둔 변수에 1을 더해줌 파이썬: class Solution: def numJewelsInStones(self, jewels: str, stones: str) -> int: jewels = [x for x in jewels] cnt=0 for i in range(len(stones)): if stones[i] in jewels: cnt+=1 return cnt 스위프트: class Solution { func numJewelsInStones(_ jewels: String, _ stones: String) -> Int { var a = 0 for s in stones where jewels.contains(s){ a+=1 } return a } }

리트코드 풀이 2022.02.06

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

extraCandies를 캔디 배열 값에 더했을때 다른 수보다 작지 않을 수 있냐는 문제. max함수로 최대값을 미리 저장해 두고 포문을 돌리며 비교 스위프트: class Solution { func kidsWithCandies(_ candies: [Int], _ extraCandies: Int) -> [Bool] { var maxcan = candies.max() var a = [Bool]() for i in 0..= maxcan!{ a.append(true) } else{ a.append(false) } } return a } } 파이썬: class Solution: def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bo..

리트코드 풀이 2022.02.06