목록전체 글 (56)
고양이발일기

Problem Solving Process 타워의 높이는 일정하므로, 타워의 갯수가 짝수인지 홀수 인지 따지면 된다. 타워의 갯수가 짝수 => p1이 무조건 선공이기 때문에 p2가 우승 타워의 갯수가 홀수 => p1이 우승 물론 상대가 이길 수 있는 결론이 나온다해도, 각각은 최적의 수로 이길 수 있게 짜여져 있기에 자신이 지도록 실수를 하는 일은 없다. 또한 여기서, 타워의 높이가 1인 경우는 무조건 p2가 이기므로, 이 경우의 수만 처리해 주면 된다. Solution def towerBreakers(n, m): return 2 if n%2 == 0 or m == 1 else 1

Problem Solving Process 나는 s 안에서 한글자 씩 for 문을 돌며 t 에 있는지 검사를 하여 있으면 찾은 index 뒤로 t를 자름. 없으면 False 리턴 하여 전부 다 통과하면 True를 리턴하는 형식으로 짰다. + 오늘 알고리즘 스터디를 하며 deque, two pointer 로 풀었던 친구들 코드 설명을 들었다! deque로 popleft()함수를 사용하면, list 에서 pop을 사용하는 것보다 시간 복잡도가 덜 든 다는 사실도 배웠다. deque - O(1) list - O(n) //재정렬의 문제 Solution class Solution: def isSubsequence(self, s: str, t: str) -> bool: for i in s: if i in t: t ..

Problem Solving Process 주어진 배열을 Sort 하고, for 문을 돌면서 diff 값을 비교하여 minimum 값을 찾으며 새로운 min 값이면 redefine, 같은 min 값이면 add 해주는 식으로 진행하였다! Solution def closestNumbers(arr): arr.sort() length = len(arr) min = sys.maxsize ans_arr = [] for i in range(length): if i != length-1: diff = arr[i+1] - arr[i] if min > diff: min = diff ans_arr = [arr[i], arr[i+1]] elif min == diff: ans_arr.append(arr[i]) ans_arr.a..

Problem Solving Process 보자마자 Dictionary를 활용하고 싶었던 문제였다. s에서 나온 문자를 t와 key-value로 매칭시켜 검사하고, s키값과 t 밸류 값이 다르면 false를 리턴하면 되겠다 싶은 문제였다. class Solution: def isIsomorphic(self, s: str, t: str) -> bool: iso_dic = {} for i in range(len(s)): if s[i] not in iso_dic: iso_dic[s[i]] = t[i] else: if iso_dic[s[i]] != t[i]: return False return True 하지만 문제가 있었으니!! s = "badc" t = "baba" 이 경우, { 'b' : 'b', 'a ':..

드디어 외주 일이 마무리 되었고 이제 알고리즘 겸 영어로 문제 푸는 연습을 시작해따 ~.~ Problem Solving Process 우선 처음 생각했던 과정은 처음부터 뒷 숫자를 검사하는 것이었다. 대충 노트를 하면서 풀었지만 내가 생각해도 너무 복잡한 과정이었고 조건문이 너무 많은 상황이었다. 그래서 다른 방법이 없을까 생각하다 나올 수 있는 경우의 수를 미리 나열하고 검사하자 였다. 우선, 메모리 제한을 두기 위해 첫번째 자리수가 될 수 있는 최대 길이는 s의길이 // 2 라는 것과, 나올 수 있는 s의 길이는 32이므로 만드는 경우의 수 자릿수를 32로 제한했다. def separateNumbers(s): s_length = len(s) max_first = s_length//2 possible..
지금 해빗프로젝트에서 7일간 뭐든 꾸준히 하기 챌린지를 하는 중이다 평소에 놓았던 알고리즘이나 시작해보자 해서 하는 챌린지 히히 이 문제를 택한 이유는 클래스101 코딩 인터뷰를 봤을 때 풀었던 문제랑 유사하기 때문에 그 때의 나를 기억하기 위해서 택했다. 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보..