분류 전체보기275 그렙(프로그래머스) 코딩테스트 후기 알고리즘 3문, SQL 2문 나왔습니다. SQL 문제는 그냥 주는 문제, 너무 쉬워서 오히려 의심스러웠습니다. 알고리즘 난이도는 그렇게 어렵지 않았는데, 실버 상위, 골드 하위 정도의 난이도였습니다. 다 푼 거 같은데 결과는 탈락.... 찾아보니까 올솔 하고도 탈락한 경우가 많더라구요? JD나 기업과 잘 맞는 사람을 찾는가 봅니다. 그래도 면접은 볼 줄 알았는데..... 2025. 3. 21. 펄어비스 코딩테스트 후기 시험 본지 한달이 지났는데, 갑자기 생각나서 씁니다. 문제는 총 15문제로 알고리즘 3문, CS 12문이었습니다. 문제 난이도는 그렇게 어렵지는 않았습니다. 다만 시험 칠 수 있는 언어가 C, C++ 인데 문제풀이를 원래 JAVA로 하다가, 최근에는 Python으로 하고 있단 말이죠? 그래서 일단 기억나는데로 하면서 막히면 라이브러리 뒤지면서 풀다보니 시간이 좀 많이 낭비됐습니다. 대충 3솔은 한 거 같은데, 3번이 좀 애매합니다. 쉽게 풀었었는데, 제가 문제를 잘 못 이해했을 수도 있어서요 그리고 CS는 대차게 말아먹었습니다. 결과는 당연히 탈락이었구요. 펄어비스 노리는 분들은 알고리즘도 알고리즘이지만 CS를 잘 준비하시는 게 좋을 것 같습니다. 2025. 3. 21. 2D 누적 합(Prefix Sum) 기법 이런게 있더라고요. 2D 누적 합은 이차원 배열(행렬)에서 특정 부분 영역의 합을 빠르게 계산해야 할 때 주로 사용됩니다. 언제 사용 할까요?1. 특정 부분 영역의 합을 자주 계산할 때 (O(1)로 최적화) 기본적으로 특정 부분의 합을 구하려면 O(N*M)이 걸리지만, 누적 합 배열을 미리 만들어두면 O(1)로 구할 수 있음.ex) 2D 배열에서 (r1, c1)부터 (r2, c2)까지의 합을 여러 번 구해야 하는 경우 부분 합 = prefix[r2][c2] - prefix[r1-1][c2] - prefix[r2][c1-1] + prefix[r1-1][c1-1] 2. 다차원 배열에서 특정 범위를 여러 번 업데이트해야 할 때 (차이 배열과 함께 사용) 특정 영역을 업데이트하는 연산이 많을 때, 차이 배열(D.. 2025. 3. 21. Chapter 26. Code-Tuning Techniques (코드 최적화 기법) 속도 향상 & 코드 크기 줄이기 성능 = 속도 + 크기 크기 줄이기 = 코드 최적화보다는 클래스와 데이터의 재설계를 통해 더 많이 이루어짐.코드 최적화 = 대규모 설계 변경보다는 소규모 변경을 의미 이 장에서 다루는 변경은 "안티 리팩토링"= 내부 구조를 개선하는 대신, 성능 향상을 위해 구조를 저하시킵니다. 구조가 저하되지 않는다면 이를 최적화라고 간주하지 않으며, 기본적으로 표준 코딩 관행으로 사용하는 것 26.1 Logic (논리) Stop Testing When You Know the Answer 프로그래밍에서 논리 표현식을 최적화하는 중요한 방법 중 하나는 조건을 알게 되면 테스트를 멈추는 것 예를 들어, 배열에서 음수 값을 찾을 때, 음수 값을 발견하면 더 이상 배열을 계속 스캔하지 않고 즉.. 2025. 3. 9. 2025 프로그래머스 코드챌린지 1차 예선 > 비밀 코드 해독 - Python, combinations https://school.programmers.co.kr/learn/courses/30/lessons/388352 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 코드 & 풀이 from itertools import combinationsdef solution(n, q, ans): possible_code = list(combinations(range(1, n + 1), 5)) total_cnt = 0 for code in possible_code: make_code = True for i in range(len(q)): if len.. 2025. 3. 7. 트리의 부모 찾기 - Python, BFS, 재귀 깊이 제한 키우기 출처 : https://www.acmicpc.net/problem/11725 코드 import sysfrom collections import deque, defaultdictdef find_parents(N, edges): graph = defaultdict(list) for a, b in edges: graph[a].append(b) graph[b].append(a) parent = [0] * (N + 1) visited = [False] * (N + 1) q = deque([1]) visited[1] = True while q: node = q.popleft() for neighbor in graph[node.. 2025. 3. 7. 이전 1 2 3 4 5 ··· 46 다음