본문 바로가기

Algorithm problem solving18

2231. 분해합 첫 풀이 패스이지만 만족스럽지 못하다. 아무리 브루트 포스 문제라고 해도... 216의 생성자가 두자리 수 일리가 없는데, 1부터 타겟까지 돌며 찾아 나가는게 너무 아깝다.😭😩 뭔가 시작점을 효과적으로 설정할 수 있는 방법이 필요하다. def f(num): return num + sum(map(int, list(str(num)))) N = int(input()) ans = 0 for i in range(1, N+1): if f(i) == N: ans = i break print(ans) 최적화 풀이 각 자리수에 올 수 있는 최대 수는 9인 것을 생각해서, 타겟 숫자의 자리수*9를 계산해 시작점을 잡아줬다. 시작점을 잡아주지 않은 첫 풀이는 1440ms가 걸렸는데, 76ms로 줄였당 🥳 휴 속이 다 시원하.. 2022. 2. 6.
python 자료구조_stack 과 queue stack 나중에 넣은 데이터를 가장 먼저 꺼내 쓸 수 있도록 설계된 자료구조이다. 택배 상하차 를 생각해보자. (LIFO : Last In First Out) 주요기능은 push():맨 마지막에 데이터 삽입, pop():맨 마지막 데이터 꺼내기, peak():맨 마지막 데이터 확인, isEmpty():스택이 비어있나요? 가 있다. python에서는 pop(), append(), st[-1], len(st) 를 사용한다. arr = [1,2,3,4] st = [] for a in arr: st.append(a) print(st) // [1,2,3,4] print(st.pop()) // 4 print(st.pop()) // 3 print(st[-1]) // 2 print(True if st else Fal.. 2020. 8. 29.
[python] collections.Counter Collections.Counter() A counter tool is provided to support convenient and rapid tallies. It is a collection where elements are stored as dictionary keys and their counts are stored as dictionary values. Counts are allowed to be any integer value including zero or negative counts. The Counter class is similar to bags or multisets in other languages. elements() c = counter(a=4, b=2, c=0, d=-2) so.. 2020. 8. 23.
14502. 연구소 (0413) PASS from collections import deque import copy def bfs(arr): global virusInfo, maxV q = deque() for v in virusInfo: q.append(v) while q: dx = [0,1,0,-1] dy = [1,0,-1,0] si, sj = q.popleft() for k in range(4): ni = si + dx[k] nj = sj + dy[k] if 0 2020. 4. 13.
[단계별로 풀어보기] 1차원 배열_All Pass fail better 하기 위해 다시 시작하는 애증의 알고리즘 실패를 쌓아 성공으로 만들고 만다 내가💪 쉬운 것부터 차근차근 다시. 10818. 최소, 최대 n = int(input()) nums = list(map(int, input().split())) for num in nums: if num > maxx : maxx = num if num maxx: maxx = num max_idx = i print(maxx) print(max_idx) 2577. 숫자의 개수 a = 1.. 2020. 4. 2.
4836. 색칠하기 T = int(input()) for tc in range(1, T+1): n = int(input()) # 도화지 준비 paper = [[0]*10 for _ in range(10)] for _ in range(n): r1, c1, r2, c2, color = map(int,input().split()) # 주어진 모서리대로 색칠 for i in range(c1, c2+1): for j in range(r1, r2+1): paper[i][j] += color # 겹치는 부분 == 3 ( 빨강 1 + 파랑 2) purple = 0 for i in range(10): for j in range(10): if paper[i][j] == 3: purple += 1 print('#{} {}'.format(tc,.. 2020. 3. 11.
1959. 두개의 숫자열 다른 사람들 코드를 보면 주석을 쓰는 사람/안쓰는 사람이 보인다, 확실히 평소에 쓰던 사람이 필요한 부분만 쏙쏙 골라 코드 이해하기 쉽게 쓴다. 코드 공유(또는 협업)할 때 굉장히 도움이 되는 부분이라 생각해서, 주석 쓰는 습관을 들이려 노력하는 중이다. 요즘 공부하고 있는 html이나 css 코드에도 코멘트를 의식적으로 넣으려 한다. 3월 9일의 풀이 T = int(input()) for tc in range(1, T+1): n, m = map(int, input().split()) num1 = list(map(int, input().split())) num2 = list(map(int, input().split())) mul = [] # 첫번째 리스트의 크기가 더 작을 경우 if n < m : for.. 2020. 3. 9.
4835. 구간합 예전에 푼 문제를 다시 풀어봤는데, 예전에도 슬라이싱, 이번에도 슬라이싱 사용해서 풀더라ㅋㅋㅋㅋㅋ 내장 함수를 최대한 사용하지 않으려 노력해봣당. 버블 소트도 다시 써봤는데, 그냥 minmax 두고 풀어도 되겠당. 1월 29일의 풀이 T = int(input()) for tc in range(1, T+1): N, M = map(int, input().split()) nums = list(map(int, input().split())) nums_sum = [] # M만큼 구간을 잘라서 합의 리스트(nums_sum)를 구해라. for i in range(0, N-M+1): nums_sum.append(sum(nums[i:i+M])) # 합의 리스트(nums_sum)의 max와 min을 찾아서 max-min을.. 2020. 3. 9.
4828. min max 풀어봤던 문제를 버블 정렬로 다시 풀어봤다 ! 배운 거를 바로바로 활용해 보려고 + 한 문제를 다양한 방법으로 접근해보려고 노력한다. 1월 28일의 풀이 T = int(input()) for tc in range(1, T+1): N = int(input()) nums = list(map(int, input().split())) max_val = nums[0] min_val = nums[0] for i in range(1, len(nums)): if max_val nums[i]: min_val = nums[i] print('#{} {}'.format(tc, max_val-min_val)) 3월 9일 풀이_버블 정렬 사용 T = in.. 2020. 3. 9.
2798. 블랙잭_fail(3/4)_pass(4/10)_pythonic(22/2/6) 3/4_FAIL의 기록 아직 통과하지 못한 코드이다. 답은 나오는데 통과가 되질 않는다. 컴퓨터는 잘못이 없으니 내가 무엇인가를 잘못한거겠지😥 테스트 케이스가 한개밖에 공개되지 않아서 어디서 틀렸는지도 모르겠다 ㅠㅠ 아 뭐 하나만 바꾸면 될 거 같은데... 뭘 놓치고 있나 def f(n, k, m, summ): # 순열의 n번 원소 결정, 순열의 길이 k, 사용할 숫자 m개 global max_val, M if summ > M: return if n == k: if summ >= max_val: max_val = summ else: for i in range(m): if used[i]==0: # i번 원소가 사용되지 않았으면 used[i] = 1 # 사용함으로 표시 # p[n] = cards[i] f(n.. 2020. 3. 4.