[프로그래머스] 둘만의 암호
·
Algorithm
문제 풀이 def solution(s, skip, index): #알파벳 리스트 alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] #리스트로 한글자씩 처리하기 위해 list 변수 정의 word = list(s) rm_alpha = list(skip) #skip에 포함되어있는 문자 alphabet에서 제거 for rm in rm_alpha : alphabet.remove(rm) for i in range..
[프로그래머스] 옹알이(1)
·
Algorithm
문제 틀렸던 코드def solution(babbling): cnt = 0 can_speak = ['aya', 'ye', 'woo', 'ma'] #babbling에 있는 단어들을 탐색 for word in babbling : #발음할 수 있는 단어들을 탐색 for s in can_speak : if word.find(s) != -1 : #발음할 수 있는 단어가 있을시에 word = word.replace(s, "") # 특정 단어를 replace if len(word) == 0 : cnt += 1 return cnt - 이렇게 로직을 짰었는데, 틀렸다. "wye..
[프로그래머스] 겹치는 선분의 길이
·
Algorithm
문제 풀이def solution(lines): #lines의 요소들의 최소값, 최대값 도출 max_val = max(max(line) for line in lines) min_val = min(min(line) for line in lines) #수직선 그리기(0을 가진 배열로 초기화), 길이는 최대값 - 최소값 + 1 n = max_val - min_val + 1 res_line = [0] * n cnt = 0 #선분들을 그린다 -> 배열의 값을 올린다 for line in lines : for i in range(line[0], line[1]) : res_line[i - min_val] += 1 ..
[프로그래머스] 평행
·
Algorithm
문제 풀이 #기울기 비교 함수 정의def parallel(a, b, c, d) : #점 a와 점 b의 기울기 g1 = (a[1] - b[1]) / (a[0] - b[0]) #점 c와 점 d의 기울기 g2 = (c[1] - d[1]) / (c[0] - d[0]) if g1 == g2 : return 1 else : return 0 def solution(dots): #dots 내 점들의 순서를 바꿔가며 비교 res1 = parallel(dots[0], dots[1], dots[2], dots[3]) res2 = parallel(dots[0], dots[2], dots[1], dots[3]) res3 = parallel(dots[0], d..
[LeetCode] 2327. Number of People Aware of a Secret
·
Algorithm
문제 비밀을 알고 있는 사람의 수를 구하는 문제이다. 총 일 수인 n, 비밀을 알게 된 사람은 delay 일이 지나고 나서부터 다른 사람에게 비밀을 말할 수 있고, forget일이 지난 후 이 비밀을 까먹게 된다. 마지막 n일이 끝나고 나서 아는 사람의 수를 구하는 문제인데, 수가 너무 커질 수도 있어 결과는 modulo인 109 + 7로 나눈 나머지로 반환한다. 풀이class Solution: def peopleAwareOfSecret(self, n: int, delay: int, forget: int) -> int: Mod = 10 ** 9 + 7 #비밀을 알고 있는 사람들의 수를 저장, secret[n]은 n번째 날에 비밀을 알고 있는 사람 수 secre..
[LeetCode] 92 - Reverse Linked List 2
·
Algorithm
문제 문제를 보면 링크드 리스트의 헤드가 주어지고, left와 right가 int값으로 주어진다. left~right 인덱스 사이의 노드들을 reverse 해서 결과 리스트를 반환하면 된다. 나는 문제를 너무 대충 봤나보다.. 처음에 left와 right가 왼쪽과 오른쪽 노드의 값인줄 알고 그 값 사이에 있는 노드를 찾아 앞뒤를 reverse한 링크드리스트를 반환하는 코드를 생각하다가 3시간을 날렸다.. 틀렸던 풀이Definition for singly-linked list.class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class Solution: ..