Challenges
-
[구름톤 챌린지 Week4(2)] 시뮬레이션, 구현시 주의점, 챌린지 마무리Challenges/구름톤 챌린지 2023. 9. 10. 08:58
주의 - 실수값 오차 실수값끼리 == 를 이용해 비교하는 것은 아주 위험하다고 합니다. 생각해보면 컴퓨터는 디지털, 즉 digit 단위이기 때문에 결코 연속적일 수가 없습니다. 실수를 표현할 때는 어쩔 수 없이 오차가 생길 수 밖에 없다는 의미입니다. 따라서 두 실수값의 차이가 어떤 작은값(아주 작은 값, 가령 1e-8 보다 작다면, 같은 값으로 간주하겠다는 의미로 볼 수 있습니다. 다이나믹 프로그래밍 (Dynamic Programming) 다이나믹 프로그래밍은 복잡한 문제를 작은 하위 문제로 나누어 해결하는 방법입니다. 이 방법은 주로 최적화 문제에 사용되며, 하위 문제의 답을 저장하여 불필요한 계산을 줄입니다. 다이나믹 프로그래밍은 주로 표나 배열을 사용하여 문제를 풀며, 이를 '메모이제이션'이라고도..
-
[구름톤 챌린지 Week4(1)] 그래프 탐색 전략 (DFS, BFS)Challenges/구름톤 챌린지 2023. 9. 10. 07:56
이번 주차는 주로 그래프 탐색을 다뤄보았습니다. '탐색'을 어떻게 할지에 따라 알고리즘의 성능에 크게 차이가 나게 되다보니, 이를 위해 전략을 잘 짜는 것이 중요합니다. DFS (깊이 우선 탐색)과 BFS (너비 우선 탐색) 크게 두 가지를 정리하겠습니다. DFS (Depth-First Search, 깊이 우선 탐색) DFS는 깊이를 우선적으로 탐색하는 알고리즘입니다. 한 노드에서 시작하여, 해당 노드에 연결된 노드들 중 하나를 선택해 계속 '깊게' 탐색하고, 더 이상 탐색할 곳이 없을 경우 이전 노드로 돌아와 다른 노드를 탐색합니다. [자료구조] DFS는 스택이나 재귀 함수를 이용해 구현할 수 있습니다. BFS (Breadth-First Search, 너비 우선 탐색) BFS는 너비를 우선적으로 탐색하..
-
[구름톤 챌린지 Week2(2)] 완전 탐색 중심 / 바둑판 원하는 값으로 채우는 방법Challenges/구름톤 챌린지 2023. 8. 24. 19:22
입력받는 정보를 2차원 배열에 저장해야 하는 경우가 발생한다. 이때 살짝 멈칫,하게 되지 않도록 리마인드 차 이 글을 쓴다. 사실 코드를 쓰기 나름이지만, 일단 다음과 같다. 방법 : 1차원 배열을 선언 후, 안에 값을 리스트(1차원)로 지정 matrix = [] for _ in range(N): row = list(input().split()) matrix.append(row) 방법2 : 마찬가지를 리스트 컴프리핸션으로 B = [input().split()) for _ in range(N)] 2차원 배열에서 최댓값을 찾는 방법 처음에는 max(R)이라고 단순히 하면 될 줄 알았는데, 그게 아니었다. max(max(row) for row in R) list comprehension과 내장 함수 max()..
-
[구름톤 챌린지 Week2(1)] 완전 탐색 중심 / 문자열 쪼개기 / 2차원 배열Challenges/구름톤 챌린지 2023. 8. 22. 12:09
6일차. 문자열을 세 파트로 나누는 것. 내 접근 방법은 먼저 한 번 쪼개고, 그 위치를 기준으로 다음 부분에 다시 한 번 더 쪼개는 걸로 진행했다. 근데 만일 네 파트 이상이 되는순간 for문이 세번 이상 중첩되어서 코드가 안예쁘긴 하겠더라. 조합으로 보는 접근 방법이 있었다. 확통 순열조합 파트에서 쉽게 보던 방법이었는데,, 코딩을 할 때는 떠올리지 못했다. 이걸 알았으니 이제 많이 차용해야지. 조합으로 접근하는 걸 알았으니, 조합을 구하는 방법을 코드로 구현하는 방법을 알아야 한다. 1. 재귀 2. from itertools import combinations 이따 조금 뒤에 다시 꼼꼼히 확인하는 걸로. 7일차. 격자판 문제 접할 때마다 어떻게 구현해야 하는지 감이 안와서 제대로 해보고 싶었는데, ..
-
[구름톤 챌린지 Week1(2)] 구현 중심 문제 테크닉 기본Challenges/구름톤 챌린지 2023. 8. 19. 18:01
리스트 컴프리핸션(list comprehension)은 파이썬에서 리스트를 생성할 때 사용하는 간결하고 읽기 쉬운 방법입니다. 기존의 for 루프 문법을 사용하여 리스트를 만드는 것보다 더 간단하게 표현할 수 있습니다. 기본 구조는 다음과 같습니다: [expression for item in iterable if condition] expression은 현재의 item에 대한 연산이나 처리 결과입니다. item은 iterable로부터 가져온 각각의 원소를 나타냅니다. ( expression과 함수적으로 관련 없다면 _ 를 써도 무방합니다. ) iterable은 반복 가능한 객체입니다. condition은 선택적 조건으로, 이 조건을 만족하는 item에 대해서만 expression이 수행됩니다. 예시: 기..
-
[구름톤 챌린지 Week1(1)] 더는 미룰 수 없다, 코딩테스트 / 코테기본Challenges/구름톤 챌린지 2023. 8. 18. 14:00
더는 미룰 수 없다, 코딩테스트 코테 코테 얘기도 참 많이 들었지만 여태껏 미뤄왔다. 우선 급한건 input이라 생각해왔는데, 이젠 정말 실전 코딩 실력을 높일 때가 되었다고 생각한다. 그러다가 굉장히 귀엽고 알록달록한 코딩챌린지가 막 시작되었다는 것을 알게 되었고, 이틀 늦게 참가하게 되었다. 백준, 프로그래머스 뭐 많이 들었지만, 아무래도 구름톤챌린지처럼 귀여운 맛이 없어서 내 이목을 끌지 못했나보다. 아직 첫 주라 그런지, 막 레벨이 엄청나게 높거나 그렇지는 않는 것 같다. 오히려 다행이다!! 손가락 좀 풀고, 이렇게 하나씩 하나씩 늘려가다보면 나도 코테에 대한 적응력이 높아지겠지? 코테의 기본 0. 입력 코테를 처음 시작했을 때, 입력값을 제대로 받는 것부터 난관에 처했다. 이 때 필요한 것이 크..