알고리즘을 공부하면서 내장함수를 쓰는게 좋을까? 직접 구현하는게 좋을까?는 누구나 고민하는 부분이다. 크기 n인 배열에서 최댓값을 구하고자 할때 어떻게 하는가? max(A)로 바로 구하거나, for문을 돌아서 최댓값을 갱신해서 찾는다. 어떻게 해도 둘의 시간복잡도는 O(N)이다. 그렇지만 실행시간에는 확실한 차이가 있다. gemini를 이용해 실제 둘의 실행시간의 테스트 코드를 짜서 비교해본다. import timeimport random# 1. 테스트 환경 셋팅N = 1000000 # 100만 개의 데이터print(f"🚀 테스트 데이터 생성 중... (크기: {N}개)")A = [random.randint(1, 1000000) for _ in range(N)]print("✅ 데이터 준비 완료!\n")..
코딩테스트 연습 - 즐겨찾기가 가장 많은 식당 정보 출력하기 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 음식 종류별로 즐겨찾기 수가 가장 많은 음식점을 조회하는 간단한 문제 -- 코드를 입력하세요SELECT food_type, rest_id, rest_name, max(favorites) as favorites from rest_infogroup by food_typeorder by food_type desc; 단순히 group by하고 max(favorites)하면 될줄 알았는데 그냥 틀리더라고 group by하는 순간 임의의 한 행으로 묶어버리더라고? select * from..
F - Double Sum (atcoder.jp) F - Double SumAtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.atcoder.jp 문제는 매우 간단하다 A1,A2,A3,...,AN이 주어지면, $$\sum_{i = 1}^{n} \sum_{j = i+1}^{n} max(A_{j} - A_{i},0)$$을 구하는 문제 n제한이 40만이라 단순하게 풀면 당연히 시간초과... 1. max(a,b) = (|a-b| + a+b)/2 방법은 많이 있던데 아주 간단하고 경이로운 솔루션이 있어서 복기해본다 배열 A에 대한 함수 f를 다음과 같이..
1. 문제 29726번: 숏코딩의 왕 브실이 (acmicpc.net) 29726번: 숏코딩의 왕 브실이 숏코딩의 왕 브실이는 오늘도 숏코딩을 한다. 브실이가 제출한 코드 길이가 수열 $A_1, A_2, \cdots, A_N$로 주어진다. 브실이의 행복도는 자신의 코드 길이에 대한 수열에 따라 달라지는데, 현재 수열 www.acmicpc.net 2. 풀이 $$\sum_{i = 1}^{L-1} A_{i+1} - A_{i} = A_{L} - A_{1}$$을 관찰하는 것은 어렵지 않다. 주어진 합은 배열을 알면 양쪽 끝의 두 원소만을 이용해서 구할 수 있다. 이 의미는, $A_{1}, A_{2}, A_{3}, ... , A_{N}$이 주어질때, 중간의 원소 $A_{2}, A_{3}, ... ,A_{N-1}$는 ..
16958번: 텔레포트 (acmicpc.net) 16958번: 텔레포트 2차원 평면 위에 N개의 도시가 있다. 일부 도시는 특별한 도시이다. (r1, c1)에 있는 도시에서 (r2, c2)에 있는 도시로 가는 이동 시간은 |r1 - r2| + |c1 - c2|와 같다. 만약, 두 도시가 특별한 도시라면, 텔 www.acmicpc.net 이 문제에서 다음과 같이 제출하면.. 시간 초과로 통과하지 못한다 from sys import stdin INF = 1e9 def floyd(graph,city): for k in range(1,n+1): for a in range(1,n+1): if k == a: continue for b in range(1,n+1): if a == b: continue graph[a]..