전체 글579 학교 공지 사항 자동화를 해보자 - 1 학교 공지 사항 자동화를 해보자 - 1 Intro. 왜 자동화를 해야 할까? 장학금이나 기타 학교에서 진행하는 프로그램들은 내게 무조건 이득이 된다. 4년 짧게 다니는 대학 생활인데 최대한 많이 얻어가야 하지 않겠나 내 하루 일과 중 하나는 학과 공지 사항을 확인하는 것이다. 아침에 연구실에 오면 직장인이 메일 보는 것처럼 뚤래뚤래 공지사항이 뜬게 있는지 보는거다 게다가 선착순이나 경쟁률 있는 것은 언제 뜰지 모르니 가끔 틈 날 때마다 들어가는데, 매우 귀찮은 일이다. 들어가야지 생각하고 들어가서 확인하는 것 자체가 에너지 낭비이다. 나의 경우, 메일에 기술 블로그와 뉴스를 구독하고 있다. 그렇다면, 학과 주요 공지사항들도 내게 메일로 보내면 되지 않을까?! 프로그래머니까 프로그래머답게 해결해보자 로직 .. 프로젝트/사이드 프로젝트 2023. 3. 22. 순수 함수 순수 함수란 무엇인가 순수 함수는 입력값에 대해 항상 동일한 출력값을 반환하는 함수를 말합니다. 이러한 함수는 입력값 외에 다른 상태나 외부 환경에 의존하지 않기 때문에, 여러 스레드에서 동시에 호출해도 안전합니다. 또한 순수 함수는 입력값을 변경하지 않고, 항상 새로운 값을 반환하기 때문에 불변 데이터 구조와도 잘 맞습니다. 함수형 언어가 병렬성에서 이점을 가지는 이유 함수형 언어에서는 병렬성(parallelism)을 위해 순수 함수(pure function)와 불변 데이터 구조(immutable data structure)를 사용합니다. 함수형 언어에서는 상태 변이(state mutation)를 피하고 불변성(immutability)을 지향하기 때문에, 일반적으로 뮤텍스(mutex)와 같은 동시성 제.. Computer Science 2023. 3. 21. CodingTest 감 살리기 with Programmers - 11일차 CodingTest 감 살리기 with Programmers 코딩 테스트를 준비 하게 되어서, 기본적인 문법도 되짚고, 감을 되찾기 위해 시작합니다 예산 def solution(d, budget): answer = 0 d.sort() for b in d: if budget-b0 else abs(money-p) return answer 알고리즘 풀이 2023. 3. 20. CodingTest 감 살리기 with Programmers - 10일차 CodingTest 감 살리기 with Programmers 코딩 테스트를 준비 하게 되어서, 기본적인 문법도 되짚고, 감을 되찾기 위해 시작합니다 크레인 인형 뽑기 from collections import deque def solution(board, moves): answer = 0 m = [deque([]) for i in range(len(board)) ] for bo in board: for i,b in enumerate(bo): if b==0: continue m[i].appendleft(b) result = [] for move in moves: move-=1 if len(m[move])==0: continue else: result.append(m[move].pop()) if len(re.. 알고리즘 풀이 2023. 3. 19. CodingTest 감 살리기 with Programmers - 9일차 CodingTest 감 살리기 with Programmers 코딩 테스트를 준비 하게 되어서, 기본적인 문법도 되짚고, 감을 되찾기 위해 시작합니다 숫자 문자열과 영단어 from collections import deque def solution(s): answer = 0 n=[i for i in range(10)] en = {0:"zero",1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine"} for i in range(10): n[i]=i jump=0 number = [] s = deque(s) while s: idx = s.popleft() if idx=="z": jump = 3 number.append(".. 알고리즘 풀이 2023. 3. 17. CodingTest 감 살리기 with Programmers - 8일차 CodingTest 감 살리기 with Programmers 코딩 테스트를 준비 하게 되어서, 기본적인 문법도 되짚고, 감을 되찾기 위해 시작합니다 다트 게임 def solution(dartResult): dart = [] temp="" for index,d in enumerate(dartResult): if d=="S" or d=="D" or d=="T": dart.append(calc(int(temp),d)) temp="" elif d=="*": if dartResult[index-2]=="*": dart[-1]*=2 dart[-2]*=2 elif dartResult[index-2]=="#": dart[-2]*=2 else: dart[-1]*=2 if len(dart)>1: dart[-2]*=2 el.. 알고리즘 풀이 2023. 3. 16. CodingTest 감 살리기 with Programmers - 7일차 CodingTest 감 살리기 with Programmers 코딩 테스트를 준비 하게 되어서, 기본적인 문법도 되짚고, 감을 되찾기 위해 시작합니다 바탕화면 정리 def solution(wallpaper): x1,x2,y1,y2 = 9999,-9999,9999,-9999 for y,wp in enumerate(wallpaper): for x,w in enumerate(wp): if w=="#": x1 = min(x1,x) x2 = max(x2,x) y1 = min(y1,y) y2 = max(y2,y) return y1,x1,y2+1,x2+1 개인 정보 수집 유효 기간 def solution(today, terms, privacies): answer = [] dic = {} ty,tm,td = map(in.. 알고리즘 풀이 2023. 3. 15. CodingTest 감 살리기 with Programmers - 6일차 CodingTest 감 살리기 with Programmers 코딩 테스트를 준비 하게 되어서, 기본적인 문법도 되짚고, 감을 되찾기 위해 시작합니다 타겟 넘버 from collections import deque def solution(numbers, target): answer = 0 numbers = deque(numbers) result = deque() while numbers: n = numbers.popleft() temp = deque() if len(result)==0: result.append(n) result.append(-n) else: for r in result: temp.append(r+n) temp.append(r-n) result = temp print(result) for .. 알고리즘 풀이 2023. 3. 14. 참조 투명(referential transparency) 참조 투명(referential transparency) 함수형 프로그래밍에서의 참조 투명(referential transparency)이란, 동일한 입력 값에 대해 항상 동일한 결과를 반환하는 함수를 의미합니다. 즉, 어떤 함수의 결과가 그 함수의 인자에만 의존하고, 그 외의 외부적인 상태나 환경에 의존하지 않는 함수를 참조 투명 함수라고 합니다. 예를 들어, 다음과 같은 함수를 생각해봅시다 def add(x, y): return x + y 이 함수는 참조 투명합니다. 왜냐하면, 인자 x와 y에 따라 결과가 달라지지만, 같은 인자에 대해서는 항상 동일한 결과를 반환하기 때문입니다. 이것은 이 함수가 다른 상태나 환경에 영향을 받지 않고, 순수하게 입력 값에만 의존하기 때문입니다. 반면에, 다음과 같은 .. Computer Science/프로그래밍 언어론 2023. 3. 14. 꼬리 재귀(tail recursion) 꼬리 재귀(tail recursion) Intro. 꼬리 재귀가 있기에 함수형 언어에서 매개변수에 상태를 저장하며, 재귀를 할 때 최적화 된다! 꼬리 재귀 설명을 처음 들었을 때는 그냥 프로그래밍 기법이지 않을까 했는데 함수형 언어에서는 최적화를 지원 한다고 한다 설명 재귀 함수의 한 종류로, 함수가 반환하는 값이 마지막에 재귀 호출하는 함수에서 계산되는 경우를 말합니다. 일반적인 재귀 함수에서는 함수 호출이 스택에 계속 쌓이게 되는데, 이러한 스택의 쌓임이 많아질 경우 메모리를 많이 사용하고 성능에 영향을 미칠 수 있습니다. 하지만 꼬리 재귀는 함수 호출 후 더 이상 수행할 작업이 없는 경우, 이전 호출 스택 프레임을 재사용하고 추가적인 스택 프레임을 쌓지 않는 방식으로 최적화합니다. 이를 통해 메모리.. Computer Science/프로그래밍 언어론 2023. 3. 14. CodingTest 감 살리기 with Programmers - 5일차 CodingTest 감 살리기 with Programmers 코딩 테스트를 준비 하게 되어서, 기본적인 문법도 되짚고, 감을 되찾기 위해 시작합니다 가장 큰수 def solution(numbers): numbers= list(map(str,numbers)) numbers.sort(key=lambda x :x*3,reverse=True) return str(int(''.join(numbers))) lambda x : x*3 을 하는 이유는 30,34,3을 정렬하면 34,3,30 이렇게 정렬이 되어야 하는데, 34,30,3 순으로 정렬이 된다. 이 때 문자열로 변환한 문자열을 3번 곱해서 정렬하면 34,3,30으로 정렬이 된다 이 방법은 경험적으로 발견된 방법이라고 한다. 다리를 지나는 트럭 from col.. 알고리즘 풀이 2023. 3. 13. CodingTest 감 살리기 with Programmers - 4일차 CodingTest 감 살리기 with Programmers 코딩 테스트를 준비 하게 되어서, 기본적인 문법도 되짚고, 감을 되찾기 위해 시작합니다 올바른 괄호 def solution(s): answer = True list = [] for i in s: if i=="(": list.append(i) else: if (len(list)==0): list.append(i) else: list.pop() if len(list)!=0: answer=False return answer 프린터 from collections import deque def solution(priorities, location): pd = deque(priorities) loc = deque([0 for i in range(len(p.. 알고리즘 풀이 2023. 3. 11. 이전 1 ··· 41 42 43 44 45 46 47 ··· 49 다음