본문 바로가기

전체 글115

ICPC Sinchon - 2022 Winter Algorithm Camp 후기 들어가며 지난 겨울에 좋은 기회로 ICPC Sinchon 알고리즘 캠프에 참가하게 되었다. 우선 나는 지금까지 알고리즘 공부를 본격적으로 해본 적은 없고, 스터디를 해본 적은 있다. 21년 1학기에 알고리즘 문제가 정리되어있는 깃허브를 참고하여 브론즈 문제를 일주일에 정해진 개수만큼 풀어와서 본인의 풀이법을 공유하고, 로직은 맞는 것 같은데 답이 제대로 안 나오는 경우 같이 디버깅을 해주는 식으로 진행했다. 동아리에서 모인 사람이라 본격적으로 프로젝트 코딩을 시작하는 기간이 됐을 때 자연스럽게 흐지부지되었다. 이때의 문제 풀이는 개념을 전혀 모른 채 일단 문제부터 풀어보는 식이었다. 문제가 제대로 풀릴 리가 없었고, 구글링해서 코드를 참고하며 이해하는 식으로 할 수밖에 없어 실력이 늘지 않았다. 그렇게 .. 2022. 3. 12.
[ALGORITHM] 10. 그래프 이론 이것이 취업을 위한 코딩테스트다 with python 문제 풀이 10-7. 실전 문제 '팀 결성' # C10. 그래프 이론 - 실전 문제 '팀 결성' import sys put = sys.stdin.readline n, m = map(int, put().split()) #학생 총 n번까지, m은 입력 개수 parent = [0] * (n + 1) # 부모 테이블 초기화하기 # 특정 원소가 속한 집합을 찾기 def find_parent(parent, x): # 루트 노드가 아니라면, 루트 노드를 찾을 때까지 재귀적으로 호출 if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] # 두 원소가 속한 집합을 합치기 def u.. 2022. 3. 8.
[ALGORITHM] 9. 최단 경로 이것이 취업을 위한 코딩테스트다 with python 문제 풀이 9-4. 실전문제 '미래 도시' # C9. 최단 경로 - 실전문제 '미래 도시' import sys put = sys.stdin.readline INF = int(1e9) # 무한을 의미하는 값으로 10억을 설정 # 회사간 1만큼 시간으로 연결된 도로 통해 이동 가능 # 방문판매원이 1번 회사에서 k번 회사를 거쳐 x번 회사로 가는 최소 이동 시간 # 노드의 개수 및 간선의 개수를 입력받기 n, m = map(int, put().split()) # 2차원 리스트(그래프 표현)를 만들고, 모든 값을 무한으로 초기화 graph = [[INF] * (n + 1) for _ in range(n + 1)] # 자기 자신에서 자기 자신으로 가는 비용은.. 2022. 3. 7.
[ALGORITHM] 8. 다이나믹 프로그래밍 이것이 취업을 위한 코딩테스트다 with python 문제 풀이 8-5. 실전문제 '1로 만들기' # C8. 다이나믹 프로그래밍 - 실전문제 '1로 만들기' import sys put = sys.stdin.readline # 그리디로 elif문 써서 큰 수 순서대로 하면 안 되는 이유 # 맨 처음에 5로 나누는 것보다 1 빼고 시작하는 게 더 작은 케이스가 있을 수 있다! # 그래서 부분문제로 나누고, 기존 연산값 재활용하는 dp로 해야 함 x = int(put()) d = [0]*30001 # DP 테이블 초기화 # x = 1일 때는 이미 1로 만들어졌으니까 연산 필요 없음 -> 2부터 시작 for i in range(2, x+1): # 뒤에 붙은 +1은 계산한 횟수 더하는 것! # -1, /2, /3.. 2022. 3. 6.
[ALGORITHM] 7. 이진 탐색 이것이 취업을 위한 코딩테스트다 python 문제 풀이 7-5. 실전문제 '부품 찾기' # C7. 이진 탐색 - 실전문제 '부품 찾기' import sys put = sys.stdin.readline n = int(put()) store = list(map(int, put().split())) m = int(put()) customer = list(map(int, put().split())) for i in customer: if i in store: print("yes", end=' ') else: print("no", end=' ') 이진 탐색으로 풀기 # C7. 이진 탐색 - 실전문제 '부품 찾기' - 이진 탐색으로 풀기 import sys put = sys.stdin.readline n = int.. 2022. 3. 5.
[ALGORITHM] 6. 정렬 이것이 취업을 위한 코딩테스트다 python 문제 풀이 6-10. 실전문제 ‘위에서 아래로’ # C6. 정렬 - 실전문제 '위에서 아래로' n = int(input()) nums = [] for i in range(n): nums.append(int(input())) nums = sorted(nums, reverse=True) for i in nums: print(i, end=' ') 6-11. 실전문제 ‘성적이 낮은 순서대로 학생 출력하기’ # C6. 정렬 - 실전문제 '성적이 낮은 순서대로 학생 출력하기' n = int(input()) array = [] for i in range(n): name, score = input().split() #원래 map으로 하려고 했는데 둘 다 int형인 게 아니라.. 2022. 3. 4.