일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 면접복기
- 정수론
- 이진탐색
- 분할정복
- deque
- 그리디
- 브루트포스
- 회고
- Python
- 배열 돌리기1
- 마크다운
- Greedy
- 백준
- 몬티홀
- Markdown
- GC
- Stack
- github
- 프로세스
- DP
- 문제풀이
- 스레드
- 적정 스레드
- 그래프 탐색
- BFS
- GarbageCollector
- 그래프탐색
- 시뮬레이션
- g1gc
- 구현
- Today
- Total
목록전체 글 (63)
FeelingXD
람다 함수 알아보기 👀 이 글에서는 람다식, 또는 람다 함수라고 불리는 lambda Λ 에 대해 알아봅니다.✨ 람다(Λ) 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명함수(Annonymous functions)을 지칭하는 용어입니다. 프로그래밍 언어에 따라서 화살표함수(Javascript), 익명함수, 람다 등 다양한 용어로 사용됩니다. 람다식은 컴퓨터 과학분야에서 의 람다 대수 입니다. 람다 라는 표현은 막상 어렵게 다가오지만 함수를 단순하게 표현하는 방법이라고 생각하시면 됩니다. #python def func(): # 함수의 기본형태 print("hello world!") (lambda: print("Hello, world!"))# 위의 함수와 동일합니다. //java public class..
이 프로그래머 경력 40년이 개발자 Noah Gibbs가 작성한 회고록의 번역입니다. 오역,의역, 오타가 있을 수 있습니다. 🥕 들어가며 2024년이면, 나는 프로그래머로서 40년간 업계에 종사하게 되었습니다. 물론 아직은 아니지만 금방 그렇게 될겁니다. 소프트웨어를 개발해서 돈을 많이 버는것과 소프트웨어 회사를 창업하는건 다릅니다. 아! 저는 돈을 잘벌어요. 하지만 이글에서는 그것에 관한 이야기는아닙니다. 제가생각하기에 당신은 아마 오래도록 소프트웨어 개발자가 되고싶어 했을겁니다. 그건 다른 몇 사람들이 오래도록 음악가가 되고싶어하거나 예술가, 지붕수리공 등 오래도록 되고싶어 하는것과 비슷합니다. 만약 아니라면 지금이라도 뒤로가기 버튼을 누르셔도 좋습니다. 하지만 저는 당신이 아마 20년 ,40년차의 ..
❓ Problem 🤔 How 기존 이동가능 한 통로(0) 은 항상 0이다 반환해야 할 map 형태는 벽을 깬이후 이동할수있는 거리의 최대값 이다. 각 위치에서 최대 이동거리를 기록한다. 최적화 벽을 깬이후 해당 위치에서 상 하 좌 우 를 탐색하며 갈수있는거리를 구하는건 굉장히 비효율적이다. 이를 위해 미리 캐싱해두는 법이 필요하다. 이제 이를 이동 가능한 통로를 다음과 같이 그룹으로 묶어 줄 수 있다. 위의 그림에서는 연두색이 5칸, 분홍색이 4칸 주황색이 1칸 인 그룹으로 구분 된다. 이를 그룹별로 나누고 그룹의 크기가 얼마나 되는지 표시한 자료구조가 필요하다. 깰벽을 기준으로 상하 좌우 탐색을 하고 (기본값+1 : 깨진벽은 통로가 될수 있으므로) 과 상 하 좌 우를 탐색해서 만날수 있는 통로의 그룹을..
❓ Problem 🤔 How ❗ Solve # 나이트 투어 import sys input =sys.stdin.readline ROWS=COLOUMS=6 visited=[[False]*6 for _ in range(6)] moves=[[2,1],[-2,1],[1,2],[1,-2],[-1,2],[-1,-2],[2,-1],[-2,-1]] # 나이트의 이동 def board_to_pos(word): # 체스보드 위치를 좌표로 변환 x=ord(word[0])-ord('A') y=ROWS-int(word[1]) return (y,x) def validate_move(s_pos,t_pos): # 현재위치와 다음위치 비교 global visited cy,cx=s_pos for dy,dx in moves: ny,nx=c..
데커레이터를 사용할때 혹은 다른 오픈된 깃허브 소스를 보다보면 다음과 같은 코드들이 있다. def some_cool_func(*args,**kwargs): # arg~~ # .. pass 여기서 매개변수를 *args, **kwargs 를 사용하는데 이것은 무었을 의미할까 ? 궁금했다. 🤔 args와 kwargs 📝 args 는 흔히 사용하는 매개변수의 약어이다. (argument) 그리고 kwargs는 Keyword Argument 의 약어이다. *args 와 **kwargs 를 이해하기 전에 Python 의 postion argument와 keyward argument 를 잠깐 설명해보자면 다음과 같다. # Position argument & Keyword argument def func(sender,..
이 글은 @staticmethod, @classmethod, @property 등 다양하게 사용되는 Python의 데코레이터에 대해서 다룹니다. 해당글은 깃허브 에서도 볼 수 있습니다. 데코레이터란 ? 👀 파이썬의 데코레이터는 함수나 메서드 에 적용되어, 사용하려는 함수, 메서드의 기능을 확장하거나 변경하는 역할을합니다. 데코레이터(Decorator) 말 그대로 꾸며주는 기능을 합니다. 기본적으로 데코레이터는 함수를 인자로 받고 추가기능(데코레이터) 를 추가한 고차함수를 반환 합니다. 데코레이터 맛보기 👅 - 예시 데코레이터는 언제 사용해야할까 ? 함수, 혹은 메서드를 사용 하는데 공통적으로 사용되는 다른 기능(함수)이 있을때 사용하는게 좋다. 설명이 모호한 관계로 예시와 함께 알아보자! 🤔 다음 함수를..
OOP (Object-Orient-Programming) 이 글에서는 프로그래밍 패러다임 중 하나인 OOP(객체지향개발)에 대해 서술한 글 입니다. 1. OOP 이전에는 .. 👀 초기의 컴퓨터 프로그래밍은 단순 명령어 집합 혹은 일렬을 과정에따른 순서대로 처리하는 절차 지향 프로그래밍 방식 이였다. 과거에는 컴퓨터 성능이 크게 좋지않고 그에따라 구동가능한 프로그램의 크기 또한 제한적이기에 절차 지향 프로그래밍 으로 충분히 문제를 해결 할 수 있었다. 2. 절차지향의 문제와 새로운 패러다임 OOP 인류의 발전으로 컴퓨터 성능의 발전과 그에따른 프로그램의 요구사항이 많아짐에 따라 기존의 절차 지향 프로그래밍 의 문제점들이 드러나기 시작했다. 2-1. 절차지향의 문제점들 유지보수 , 디버깅의 어려움 : 절차지..
Python GC는 어떻게 동작하는가 파이썬 GC 에대한 글입니다. 파이썬 GC는 어떻게 동작 하는지에 대해 서술합니다. Python 의 GC 파이썬에서는 기본적으로 garbage_collection 이외에도 reference counting을 통해 할당된 메모리를 관리한다. 기본적으로 refernce counting은 각객체의 참조 횟수가 0이면 도달할수 없는객체로 판단하여 collecting을 한다. 하지만 참조횟수가 0은 아니지만 도달할수없는 경우의 문제도 있다. 이를 해결하기위해 Python 에서는 추가적으로 cyclic garbage collection 을 통한 가비지 컬렉션을 추가적으로 사용한다. 레퍼런스 카운팅 파이썬에서 다른객체가 객체를 참조할때 참조하는 객체의 레퍼런스 카운트를 증가시킵니..
Java 9 이후로 GC(Garbage Collector) 의 표준이 된 G1GC에 대해 작성하는 글 입니다. G1GC: Garbage 1(first) Garbage Collector G1GC 는 이름에서 알수 있듯 가바지 수집이 최우선이 되는 가비지 컬렉터입니다. Java9 부터 Java 진영의 표준 GC 모델이 되었으며 다읍과 같은 특징이 있습니다. 쓰레기로 가득찬 heap 영역을 집중적으로 수집 큰메모리를 가진 멀티 프로세서 시스템에 사용하기 위해 개발된 GC이다. G1GC는 일시정지시간(STW)을 최소하 하면서, 가능한 처리량도 확보하는것이 G1GC의 목표이다. G1 은 통계를 계산해가면서 GC 작업량을 조절한다. 다음 상황일때 G1GC를 사용하는데 도움이됩니다. HEAP의 50% 이상 라이브 데..
❓ Problem 🤔 How N = 스크린에 대한 몰로코의 입찰가 와 , 현재 최고 입찰가 의 갯수가 주어진다. K = 입찰받아야하는 최소 스크린 수 N 개의 줄에 몰로코의 입찰가 , 현재 최고 입찰가가 순으로 주어진다. diff_fee 를 기록한다. 해당 리스트는 입찰가 차이(현재 입찰 최고가-입찰가)를 모아서 보관 한다. diff_fee 를 정렬하면 입찰가 차이가 낮은순서로 정렬되고 diff_fee 의 K번째 원소(입찰가 차이의 K번째 원소)까지 구매할 수 있어야한다. 최소입찰 금액이 음수일 수 없으니 max(0, diff_fee[K-1]) 로 최소가격은 0으로 출력해 주어야 한다. ❗ Solve # 모바일 광고 입찰 import sys input =sys.stdin.readline def solut..
깃허브 마크다운에서는 마크다운 외 추가적인 기능들을 지원한다 이글에서는 깃허브 마크다운의 특별한 인용구들에 대해 설명한다. > \[!NOTE\] > Highlights information that users should take into account, even when skimming. > \[!TIP\] > Optional information to help a user be more successful. > \[!IMPORTANT\] > Crucial information necessary for users to succeed. > \[!WARNING\] > Critical content demanding immediate user attention due to potential risks. > ..
메서드, 함수를 사용 할때 매개변수 와 전달인자(Parameter and Argument) 혼용해서 사용합니다. 이들의 차이에 대해 작성합니다. 뭐가 다르지 ?.🤔 파이선 뿐만 아니라 자바의 메서드 에서도 간혹 위의 두개를 혼용해서 사용하는 경우가있는데 구분하는 것은 다음과 같습니다. 예제코드와 함께 알아봅시다. def my_function(name,age): # 파라미터 print(f'{name} 의 나이는 {age} 입니다.') my_function('김철수',20) # 아규먼트 위의 예제에서 my_function(name,age) 에서 name, age 부분을 Parameter(파라미터, 매개변수) 라고 부를수있다. 즉 위의 함수에서는 name, age 이 매개 '..