본문 바로가기

분류 전체보기70

[Python] 1_000은 도대체 뭘까 백준을 풀면서 다른 사람들 코드를 보는 중 i = 1_000 또는 i = 1_000_000 같은 코드를 봤다.  바로 스택오버플로우에 찾아봤다. https://stackoverflow.com/questions/49837534/what-do-1-000-and-100-000-mean What do 1_000 and 100_000 mean?Since I've been learning Python, I've sometimes seen beginner examples that look like this: sum_sq = [None] * 1_000 I've bought three Python books and none have mentioned what the 1_000 and 100_000stackoverflow.. 2022. 6. 14.
[Python] 재귀함수 재귀함수란? 아마 다들 어디선가 이 글을 한 번쯤은 읽어봤을 것이다. (이거 보고 웃으면 빼빡 개발자...) 개발자들이 썰렁 개그에 진심인지라 개발자 커뮤니티에 재귀에 관해서 물어보면 꼭 이 농담이 나온다. 심지어 백준에는 이런 문제도 있다. 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 필자도 처음에는 저게 무슨 소리야 했는데 지금 다시 보니 재귀에 대해서 꽤나 잘 설명한 유머다. 이렇게 개발자화가 되는 것인가... 그래서 진짜 재귀란? 재귀함수는(이하 재귀) 자기 자신을 호출하는 함수다. 맞는 정의이지만.. 2022. 6. 12.
[Python] 리스트 복사하기 (일차원 & 다차원) 코드 우선 리스트를 복사하려면 일차원이냐 다차원이냐에 따라서 나뉜다. 일차원 리스트 복사하기 # 방법 1 list2 = list1.copy() # 방법 2 list2 = list1[:] # 방법 3 list2 = list(list1) 다차원 리스트 복사하기 import copy list2 = copy.deepcopy(list1) list1 = list2는? 보통은 list1의 요소를 list2에다가 복사하고 싶다면 list2 = list1하면 되는 것 아니냐고 생각할 것이다. 그러나 이렇게 리스트를 복사한다면 list2의 요소를 변경했을 때 list1의 요소도 변경된다. 확인해보자. # 일차원 배열 list1 = [1, 2, 3, 4] list2 = list1 list2[0] = 0 print(list1.. 2022. 3. 25.
[Python] DFS & BFS DFS & BFS 란? 먼저 읽으면 좋은 글: [Python] 그래프 (인접 행렬, 인접 리스트) + DFS/BFS를 배우기 앞서 알아야 할 개념들 (탐색 알고리즘, 자료구조) 위에 글에서도 언급했듯, DFS(Depth-First Search)와 BFS(Breadth-First Search)는 그래프 탐색 알고리즘(Graph traversal algorithm)이다. 그래프 탐색 알고리즘이란, 그래프의 모든 꼭짓점(Node 또는 Vertex라 한다)을 방문하는 알고리즘을 의미한다. DFS vs BFS DFS와 BFS의 차이점은 바로 노드 방문 순서이다. DFS DFS는 깊이 우선 탐색이라는 그 이름답게 그래프의 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 스택 자료구조를 사용하여 그래프의 가장 깊은 곳.. 2022. 3. 19.
[Python] 이분/이진 탐색 이분/이진 탐색이란?이분 또는 이진 탐색이라 불리는 이 탐색은(이하 이분 탐색) 탐색 범위를 반씩 좁혀가는 탐색하는 알고리즘이다. 이분 탐색은 결정 문제의 답이 이분적일 때, 그리고 데이터가 정렬되어 있을 때 사용할 수 있다. 보통 정렬되지 않은 리스트를 탐색해야 할 때 앞에서부터 순차적으로 확인하는 탐색인 순차 탐색을 쓰지만, 원소를 하나씩 확인해야 하기에 시간 복잡도가 O(n)이다. 그러나 이분 탐색은 계속해서 탐색 범위를 반으로 줄여나가기에 O(logN)으로 순차 탐색보다 빠르다.   구현이분 탐색을 구현하는 방법에는 2가지가 있다. 하나는 재귀 함수, 그리고 다른 하나는 반복문을 사용하는 것이다.  재귀 함수로 구현def binary_search(array, target, start, end): .. 2022. 3. 2.
[2022] 2월 PS 기록 2월 결산 (2월 28일 기준) 골드 5, 현재까지 총 169문제를 풀었다. 2월에는 총 35문제를 풀었다. 브론즈 7개(20% 정도), 실버 27개(77% 정도), 골드 1개(2% 정도) 문제를 풀었다. 이번 달에는 35문제 중 23개의(65.71%) 문제를 스스로 풀었다. 저번 달 수치인 12개(39.39%) 보다 대략 1.6배 늘었다. 1월보다 브론즈 문제의 점유량이 커졌는데, 저번 달보다 문제를 더 많이 풀어서 그렇다. 실제로 푼 실버 문제의 양은 저번 달 30문제, 이번 달 27문제로 큰 차이가 없다. 이번 달 문제 풀이 시간도 22시간 10으로, 문제 양이 늘었는데 문제 풀이 시간은 저번 달 23시간 31분에서 1시간 21분이 줄었다. 그리디, 정수 및 조합론, 스택, 덱과 큐, 분할 정복, .. 2022. 3. 1.
[Python/C] 반례/테스트 케이스 생성기 만들기 가끔 문제를 풀다 보면 예제도 다 통과했는데 도대체 왜 틀렸는지 알 수 없는 문제들이 있다. (왜맞틀?????) 그럴 때 진짜 답답해서 미쳐버릴 거 같은 심정으로 반례를 찾아 헤매는데 이게 찾기 쉽지 않다. 그럴 때는 반례 생성기를 만들어서 찾으면 된다. 이 반례 생성기는 백준 1654문제를 기준으로 만들었다. 1. 예제 생성 함수 우선 example()이라는 예제 생성 함수를 만든 뒤, 문제에 맞춰서 randint()으로 최소 값, 최대 값 주고 예제를 생성하면 된다. 원래 1 2022. 2. 26.
[Window] VSCode에서 C/C++ 실행 및 디버깅하기 VSCode에서 C/C++을 사용하려면 별도의 조치가 필요하다. 이 단계들이 조금 번거롭기에, C를 주력으로 사용하는 사람이라면 Visual Studio를 쓰는 것을 권장한다. 설치만 하면 별도의 조치 없이 바로 사용할 수 있으나, 프로그램 조금 무거운 것이 흠이다. 나는 C/C++로 개발할 것도 아니고, 단순 알고리즘 공부 용으로 C를 사용하기 때문에 기존에 사용하던 VSCode를 계속 사용하고 싶었다. (실은 다 필요 없고 vim을 사용해도 되긴 한다. vim 최고(?!)) 서론은 이쯤 하고, 본론으로 들어가겠다. 1. Msys2 설치https://www.msys2.org/ MSYS2Software Distribution and Building Platform for Windowswww.msys2.o.. 2022. 2. 24.
[GitHub] 첫 Issue open 및 반영 기념 이전 [JavaScript] innerHTML / innerText / textContent 차이에 대해서 작성하고 있을 때, `innerText`는 분명 `HTMLElement`인데 한글 번역 페이지에서는 `Node.innerText`라고 제목이 작성되어 있었다. 영어 페이지에는 멀쩡하게 `HTMLElement.innerText`라 적혀 있었기에 오타라고 확신했다. 그래서 떨리는 마음으로 첫 Issue를 오픈했고, (이슈를 오픈하는 것도 처음인데, 첫 이슈를 이렇게 큰 오픈 소스에 날리다 보니 떨리기도 하고, 마치 진짜 개발자가 되어 가는 기분이어서 엄청 설렜다ㅎㅎ) 오늘 수정된 것을 발견했다...!!! 기념비적인 내 첫 이슈...! 그리고 수정된 페이지! 남들에겐 별 대수롭지 않은 일이라 여겨질 수 .. 2022. 2. 2.