본문 바로가기

전체 글44

[2022] 3월 PS 기록 3월은 까먹고 백준 기록을 안 찍어놨다...;; (실은 기록하기 귀찮아서 차일피일 미루다... 오늘까지 왔네...ㅎ) 우선 3월에는 골드 5에서 골드 4로 레벨 업했고, 36문제를 풀었다. 3월 31일까지 총 205문제를 풀었으며 현재(6월 18일)까지 스트릭 유지 중이다. 차트에서 볼 수 있다시피, 실버 문제를 주로 풀었다. 다만 저번 달(2월)과 다른 점은, 골드 문제의 비중이 늘었다...! 3퍼센트이지만 앞으로 골드 문제의 비중을 늘려나가는 것이 목표다. 36개의 문제 중 23문제를(63.89%) 스스로 풀었으며, 저번 달보다(65.71%) 1.82% 정도 떨어졌는데 골드 문제의 개수가 늘어서 그러므로 스스로 푼 문제의 비중은 비슷하다. 이번 달에는 이분/이진 탐색, DFS/BFS, 백트래킹 문제들.. 2022. 6. 18.
[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_000 stackoverflo.. 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.
[VSCode] VSCode에서 C/C++ 실행 및 디버깅하기 VSCode에서 C/C++을 사용하려면 별도의 조치가 필요하다. 이 단계들이 조금 번거롭기에, C를 주력으로 사용하는 사람이라면 Visual Studio를 쓰는 것을 권장한다. 설치만 하면 별도의 조치 없이 바로 사용할 수 있으나, 프로그램 조금 무거운 것이 흠이다. 나는 C/C++로 개발할 것도 아니고, 단순 알고리즘 공부 용으로 C를 사용하기 때문에 기존에 사용하던 VSCode를 계속 사용하고 싶었다. (실은 다 필요 없고 vim을 사용해도 되긴 한다. vim 최고(?!)) 서론은 이쯤 하고, 본론으로 들어가겠다. 1. Msys2 설치 https://www.msys2.org/ MSYS2 Software Distribution and Building Platform for Windows www.msys.. 2022. 2. 24.