본문 바로가기

Algorithm/etc111

[파이썬] 프로그래머스 : 주사위 고르기 (레벨3) [파이썬] 프로그래머스 : 주사위 고르기 (레벨3)https://school.programmers.co.kr/learn/courses/30/lessons/258709  풀이방향성 생각10C5 : 주사위를 반으로 나누는 모든 경우의 수6^10 : 승률 계산하는 경우의 수 (6^5씩 양 플레이어 둘)주사위 수는 1~100까지고, 중복된 수를 줄이기 위해 6^5 리스트 대신 딕셔너리로 관리한다. 전체코드from collections import Counterdef solution(dice): n = len(dice) r = n//2 def dfs(score, cnt): if cnt == r: scores.append(score) return .. 2025. 3. 23.
[파이썬] 백준 2003 : 수들의 합 (실버4) [파이썬] 백준 2003 : 수들의 합 (실버4)https://www.acmicpc.net/problem/2003풀이방향성 생각누적합입력이 10000이라 N^2도 될 줄 알았는데, 숫자가 커서 그런가 TLE해시 써서 O(N)으로 풀이 파이썬from collections import defaultdict as ddN,target = map(int,input().split())arr = list(map(int,input().split()))cs = 0table = dd(int)table[0] = 1answer = 0for a in arr: cs += a if cs - target in table: answer += table[cs-target] table[cs] += 1print.. 2025. 3. 22.
[파이썬] 프로그래머스 : 두 큐 합 같게 만들기 (레벨2) [파이썬] 프로그래머스 : 두 큐 합 같게 만들기 (레벨2)https://school.programmers.co.kr/learn/courses/30/lessons/118667 풀이방향성 생각입력이 커서 $O(N)$이나 $O(NlogN)$으로 풀이.가장 빠르게 떠오른 풀이는 누적합 + 투포인터인데, 두 큐를 합쳐서 투포인터 돌리면 TLE 확률이 커져서 누적합 + 이분탐색으로 풀이. 전체코드def solution(Q1,Q2): leng = len(Q1) def solve(q1,q2): # 누적합 배열 만들기 cumsum = [0] for val in q1 + q2: cumsum.append(cumsum[-1] + val) # 불.. 2025. 3. 20.
[파이썬] 프로그래머스 : 두 원 사이의 정수 쌍 (레벨2) [파이썬] 프로그래머스 : 두 원 사이의 정수 쌍 (레벨2)https://school.programmers.co.kr/learn/courses/30/lessons/181187풀이방향성 생각1사분면 + x>0인 x축만 세주기 (O(N)) 전체코드def solution(r1,r2): answer = 0 for x in range(1,r2+1): y2_sq = int((r2**2-x**2)**0.5) # y2_sq보다 같거나 작은 (1부터 int(y2_sq)) # y1도 같은 방식으로 구해서 빼준다. if x코멘트코드 바이트 수 줄인다고 띄어쓰기 줄이는 식으로 짰는데 걍 늘려서 짜야될듯... 가독성 떨여저서 실수함 2025. 3. 19.